.gitignore 및 "체크 아웃시 다음 추적되지 않는 작업 트리 파일을 덮어 씁니다."
그래서 .gitignore 파일에 폴더를 추가했습니다.
내가하면 git status
그것은 내게 말해
# On branch latest
nothing to commit (working directory clean)
그러나 분기를 변경하려고하면 다음과 같은 결과가 나타납니다.
My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
public/system/images/9/thumb/red-stripe.jpg
public/system/images/9/original/red-stripe.jpg
public/system/images/8/thumb/red-stripe-red.jpg
public/system/images/8/original/red-stripe-red.jpg
public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
public/system/images/7/thumb/red-stripe-dark.jpg
public/system/images/7/original/red-stripe-dark.jpg
public/system/images/7/original/DSC07833.JPG
public/system/images/6/thumb/red-stripe-bw.jpg
public/system/images/6/original/website-logo.png
public/system/images/6/original/red-stripe-bw.jpg
public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
public/system/images/5/original/logocompv-colored-squares-100px.png
public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
public/system/images/4/thumb/DSC_0001.JPG
public/system/images/4/original/logo.png
public/system/images/4/original/DSC_0001.JPG
public/system/images/4/original/2-up.jpg
public/system/images/3/thumb/logo2.gif
public/system/images/3/original/logo2.gif
public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
public/system/images/3/original/11002000962.jpg
public/system/images/2/thumb/Profile Pic.jpg
public/system/images/2/original/Profile Pic.jpg
public/system/images/2/original/02 Login Screen.jpg
public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting
내 .gitignore 파일은 다음과 같습니다.
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*
파일을 삭제하지 않고 분기를 전환 할 수 있도록이 작업을 수행하려면 어떻게해야합니까?
변경하면 해당 파일에 영향을 줍니까? 즉, 나중에이 브랜치로 돌아 오면 최근 커밋까지 모든 것이 완벽할까요?
파일을 잃어 버리고 싶지 않고 추적하는 것도 원하지 않습니다.
파일을 무시하고 싶은 것 같지만 이미 커밋되었습니다. .gitignore는 이미 저장소에있는 파일에 영향을주지 않으므로 git rm --cached
. 그러면 --cached
작업 복사본에 영향을주지 않으며 다음에 커밋 할 때 제거 된 것으로 표시됩니다. 파일이 저장소에서 제거 된 후 .gitignore는 파일이 다시 추가되는 것을 방지합니다.
그러나 .gitignore에 또 다른 문제가 있습니다. 과도하게 와일드 카드를 사용하고 있으며 예상보다 적게 일치합니다. 대신 .gitignore를 변경하고 이것을 시도하십시오.
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/
경고 : 추적되지 않은 파일을 삭제하므로 제기되는 질문에 대한 좋은 대답이 아닙니다.
나도이 메시지를 쳤다. 제 경우에는 파일을 보관하고 싶지 않았기 때문에 이것은 저에게 효과적이었습니다.
git 2.11 이상
git clean -d -f .
이전 자식
git clean -d -f ""
If you also want to remove files ignored by git, then execute the following command.
BE WARNED!!! THIS MOST PROBABLY DESTROYS YOUR PROJECT, USE ONLY IF YOU KNOW 100% WHAT YOU ARE DOING
git 2.11 and newer
git clean -d -fx .
older git
git clean -d -fx ""
http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x
means ignored files are also removed as well as files unknown to git.-d
means remove untracked directories in addition to untracked files.-f
is required to force it to run.
Warning: This will delete the local files that are not indexed
Just force it : git checkout -f another-branch
If you're on OS X, it may be because a file's name has had certain characters change case. Try setting the following config option:
git config core.ignorecase true
Git is telling you that it wants to create files (named public/system/images/9/...
etc), but you already have existing files in that directory that aren't tracked by Git. Perhaps somebody else added those files to the Git repository, and this is the first time you have switched to that branch?
There's probably a reason why those files in your develop
branch but not in your current branch. You may have to ask your collaborators why that is.
how do I get this working so I can switch branches without deleting those files?
You can't do it without making the files disappear somehow. You could rename public
to my_public
or something for now.
if I came back to this branch afterwards would everything be perfect as up to my latest commit?
If you commit your changes, Git won't lose them. If you don't commit your changes, then Git will try really hard not to overwrite work that you have done. That's what Git is warning you about in the first instance here (when you tried to switch branches).
This worked for me.
1. git fetch --all
2. git reset --hard origin/{branch_name}
There is a command for this delicate task (permanently deleting untracked files)
git clean -i
Then git pull
will do.
Unfortunately neither git rm --cached
or git clean -d -fx ""
did it for me.
My solution ended up being pushing my branch to remote, cloning a new repo, then doing my merge in the new repo. Other people accessing the repo had to do the same.
Moral of the story: use a .gitignore
file from inception.
For those who need something less far-reaching than Scott Schafer’s answer,
git clean -f
will likely work. I highly suggest running
git clean --dry-run
first. That command will output a list of files that Git will remove if you run git clean -f
, and might save you the pain of inadvertently removing something you didn’t want to.
See this Stack Oveflow answer or the docs for more information on git clean
.
If you want to quickly resolve this question,You can use this command:
git checkout -f dev
I had the same problem when checking out to a branch based on an earlier commit. Git refused to checkout because of untracked files.
I've found a solution and I hope it will help you too.
Adding the affected directories to .gitignore
and issuing $ git rm -r --cached
on them is apparently not enough.
Assume you want to make a branch based an earlier commit K to test some stuff and come back to the current version. I would do it in the following steps:
Setup the untracked files: edit the
.gitignore
and apply$ git rm -r --cached
on the files and directories you want the git to ignore. Add also the file.gitignore
itself to.gitignore
and don't forget to issue$ git rm -r --cached .gitignore
. This will ensure the the ignore behavior of git leaves the same in the earlier commits.Commit the changes you just made:
$ git add -A
$ git commit
Save the current log, otherwise you may get problems coming back to the current version
$ git log > ../git.log
Hard reset to the commit K
$ git reset --hard version_k
Create a branch based on the commit K
$ git branch commit_k_branch
Checkout into that branch
$ git checkout commit_k_branch
Do your stuff and commit it
Checkout back into master again
$ git checkout master
Reset to the current Version again
$ git reset current_version
or$ git reset ORIG_HEAD
Now you can reset hard to the HEAD
git reset --hard HEAD
NOTE! Do not skip the next-to-last step (like e. g. $ git reset --hard ORIG_HEAD
) otherwise the untracked files git complained above will get lost.
I also made sure the files git complained about were not deleted. I copied them to a text-file and issued the command $ for i in $(cat ../test.txt); do ls -ahl $i; done
If you checkout to the branch mentioned above again, do not forget to issue $ git status
to ensure no unwanted changes appear.
This happened to me on a Windows 8 system, using Git from the command prompt. The rest of my team uses TFS, and I use Microsoft's git-tf to push/pull between TFS and my local Git repository.
The problem arose due to some files that had been renamed only to change their case. What appears to have happened was this:
- The files were checked in with mixed casing in their names.
- In a later commit, the file names were changed to all lower-case.
- git-tf initially got the files in mixed case.
- When the files were renamed to lower-case, git-tf didn't get the files because to Windows 8 those file names are equivalent.
- Since Git is case-sensitive, it complained that I had the mixed-case files that weren't in source control. But using
git status
, I couldn't see any changes, since in the Windows command prompt those file names are equivalent.
The simplest solution for me was:
git checkout
a previous version of the project, well before those files were ever added.- Then
git checkout
the latest version of the project, with the correct file casing.
In my case, the problem was with the submodules. master
was merged with another branch which added a new submodule to the project. The branch I was trying to checkout didn't have it, that's why git was complaining about untracked files and none of the other suggested solutions worked for me. I forced the checkout to my new branch, and pulled master.
git checkout -f my_branch
git pull origin master
git submodule update --init
In my case git rm --cached
didn't work. But i got it with a git rebase
I was also facing a similar issue and i tried all the solutions posted above but it didn't work
The issue was caused when i renamed my onMusicUpdateListener.java
to OnMusicUpdateListener.java
in develop
branch.
Now master
had onMusicUpdateListener.java
and develop
had the same file as OnMusicUpdateListener.java
Now whenever i switched to master it gave me an error
The following untracked working tree files would be overwritten by checkout
and then it aborted
.
In order to solve this, i forcefully checked out
master
branch and then renamed my onMusicUpdateListener.java
to OnMusicUpdateListener.java
, committed
it and then merged
it with develop
branch.
Then i updated my develop
branch by merging
it into master
and now everything is back to normal and problem is solved.
These two functions(git rm --cached, git checkout -f another-branch) did NOT work for me.
Instead, I physically removed the file (in eclipse) as what Git tells you to do; Please move or remove them before you can switch branches.
and then I add/committed it.
and then I pulled and it worked!
This could be a permission issue,
change the ownership,
sudo chown -v -R usr-name:group-name folder-name
2 files with the same name but different case might be the issue.
You can Delete one on these files or rename it. Ex:
Pdf.html.twig (The GOOD one)
pdf.html.twig (The one I deleted)
Move files, instead of delete
One way of avoiding deleting files is to move them instead. For example:
cd "`git rev-parse --show-toplevel`"
git checkout 2>&1 | while read f; do [ ! -e "$f" ] || mv "$f" "$f".bak; done
If you have renamed a file locally and then do a pull
, it will display that error message.
that's easy to solve, git is saying that you have the same files in both branches, therefore you have to delete the specific files from master branch and then you will be able to merge:
git merge "your branch"
I hope it works for you, I just solved my error. my error was:
error: The following untracked working tree files would be overwritten by merge: .vs/slnx.sqlite Please move or remove them before you merge. Aborting
Now it is working! In my case .vs/slnx.sqlite was generated by visual studio, I needed to close it before delete it.
In my case, I was seeing this error because I am using a popular open source CMS and the directory which was causing issues was the uploads directory which the CMS writes to.
So what it was saying is that there are files which you don't have, but which you can't get from versioning.
I'm grabbing all the files from the live site to my local, then I'll check this into the repo in the hope that this fixes the issue.
Delete .gitignore file from appname/gen/ to solve this issue.
I just went to the file system and deleted the file directly, then continued with git checkout and it worked.
I've had the problem occur several times and it may be related to developers doing delete, push, re-add, push or some such thing.
Most of the answers consider deleting or removing the files, which is the easy way. But sometimes you don't want to get rid of the local files. But merge with a strategy, so git has solution for this too ;
git merge --strategy=ours master
Just delete the files or rename them.
e.g.
$ git pull
Enter passphrase for key '/c/Users/PC983/.ssh/id_rsa':
error: Your local changes to the following files would be overwritten by merge:
ajax/productPrice.php
Please commit your changes or stash them before you merge.
error: The following untracked working tree files would be overwritten by merge:
ajax/product.php
Please move or remove them before you merge.
Aborting
Updating a04cbe7a..6aa8ead5
I had to rename/delete ajax/product.php and ajax/produtPrice.php.
Don't worry, git pull will bring them back. I suggest you to rename them instead of deleting, because you might loose some changes.
If this does not help, then you have to delete the whole Branch and create it again and then do git pull origin remotebranch
In order to save the modified files and to use the modified content later. I found this error while i try checking out a branch and when trying to rebase. Try Git stash
git stash
Check if any folder name having '/' or any special symbol then rename that folders. Then you just clone the repository to another location.
'program story' 카테고리의 다른 글
Google API의 "최신"jQuery 라이브러리에 대한 링크가 있습니까? (0) | 2020.09.29 |
---|---|
이미 원격 브랜치에 푸시 된 병합 커밋을 되 돌리는 방법은 무엇입니까? (0) | 2020.09.29 |
C ++에서 인터페이스를 어떻게 선언합니까? (0) | 2020.09.29 |
.NET에서 어셈블리 바인딩 실패 로깅 (Fusion)을 활성화하는 방법 (0) | 2020.09.29 |
HTML 체크 박스를 읽기 전용으로 설정할 수 있습니까? (0) | 2020.09.29 |