Git:为什么结帐会覆盖我的文件?

问题描述

我是git的新手。 git checkout后收到错误消息error: Your local changes to the following files would be overwritten by checkout:

我从Stack Overflow here中发现了一个很好的问题。

但是我还是很困惑。 为什么我的文件跟随我要签出的分支? 我希望这些文件保留在local分支中,而我可以简单地移至dev分支而不使用这些文件


我的情况

local branch that I'm focusing(all files are committed)
- add => new_file.java
- delete => deleted_file.java
- modify => modified_file.java

git checkout dev
=> error: Your local changes to the following files would be overwritten by checkout:

编辑

我知道发生了什么事。抱歉,我上面的解释是错误的。

admin : is local branch that I'm focusing(all files are committed)
- add => new_file.java
- delete => deleted_file.java
- modify => modified_file.java

someone removed origin/admin branch,and created origin/admin/dev branch.
- my local
ㄴadmin

- origin
ㄴadmin (removed)
ㄴadmin/dev (created)

I tried checkout origin/admin/dev branch!
git checkout origin/admin/dev

- my local
ㄴadmin
ㄴadmin/dev (checkout Failed)

它可能会失败。 因为我的本地分支的名称“ admin”和远程分支的名称“ admin / dev”已崩溃。 如果分支的名称崩溃,则签出失败,并且文件仍保留在我的工作空间中! Using the slash character in Git branch name

很抱歉提供了错误的解释。

解决方法

提交文件后,文件将保留在分支中。鉴于它们尚未提交,因此,通常git将移至您要检出的分支 ,如果在您的工作树之间更改了在工作树上修改的文件当前位置以及您想去的地方。鉴于情况并非如此,git会警告您。你能做什么?您可以通过提交这些更改来包装新修订版,也可以将它们存储起来,以便稍后可以返回分支机构并继续您的工作

git stash save -m "will come back later (or whatever you want to say)"
git checkout another-branch
# do lots of things
# when you are ready to go back:
git checkout the-branch-where-i-was
git stash pop

您又回到了以前。