我正在feature
分支上工作,我在其中添加和修改了一些文件。
有一刻我想切换到develop
分支,但是我不想看到我在feature
分支中所做的更改。
所以我做了git checkout develop
,但更改仍然存在。我已切换到develop
分支,但更改仍然存在。
我想完成的是:
git checkout develop
时,我会转到develop
分支并放弃更改。 feature
时,在feature
中所做的分支更改应该再次可见。我想出的唯一方法是:
feature
的变化develop
feature
但是我不喜欢藏匿的方式。有没有办法仅使用git checkout
或不使用隐藏项来完成此操作?
答案 0 :(得分:1)
如果您不喜欢使用存储,并且我个人没有任何理由不喜欢使用存储,则可以尝试在feature
分支上进行临时提交:
# work work work
git add <file1>
# ... and add other files
git commit -m 'temporary commit for some feature'
然后,您可以切换到develop
分支来执行您想要的任何事情。当返回到feature
分支时,您可以继续在该提交之上进行工作,或者尝试恢复到原始的工作状态。要恢复工作时的状态,可以尝试进行混合重置:
git reset --mixed <SHA-1 of temporary commit>
这会将分支的HEAD与索引一起移回一次提交。因此,您将剩下一个包含正在执行的工作的工作目录,但是feature
分支上没有任何实际的提交。现在,您可以完成当前功能并进行永久提交。
但是请注意,git stash
本身实际上是通过进行两次(有时是三个)提交来存储正在进行的工作来实现的。因此,我的答案实际上使用了类似的隐藏方法,但有一些区别。