我在分支wip
,并希望转移到分支dev
。我在工作目录中有一些未提交的更改。
$ git checkout dev
error: Your local changes to the following files would be overwritten by checkout:
.idea/runConfigurations/celery_beat.xml
Please, commit your changes or stash them before you can switch branches.
Aborting
好的,我明白了:那个文件不会合并。而且我不想失去对它的改变。我想要的是:
或者,我有时想要这个:
wip
分支中的非编译文件应该保持原样,其余的工作目录应该从dev
分支填充。一个简单的git diff
将告诉我移动到dev
分支后我有什么变化。我现在解决这个问题的方法是:
git status
git checkout -- .
git checkout dev
git diff
现在向我提供与dev
git
是否有内置机制来执行此操作?
答案 0 :(得分:1)
#stash the changes to ".idea/runConfigurations/celery_beat.xml"
git stash
#switch to dev without conflicts or overwriting
git checkout dev
#restore ".idea/runConfigurations/celery_beat.xml" to the version before the switch
git checkout stash@{0} -- .idea/runConfigurations/celery_beat.xml
#now ".idea/runConfigurations/celery_beat.xml" is staged, in order to remove it from the index:
git reset HEAD -- .idea/runConfigurations/celery_beat.xml
#if you'd like to drop the stash entry
git stash drop
但我还是要说,追踪.idea
并不是一个好主意。