当我工作时,我经常会遇到这个工作流程:
此工作流程有一个缺点:它在我的系统中生成虚拟提交。我的问题是:我怎样才能避免这种情况?例如,当我回来工作时,我会取消之前的提交吗?
答案 0 :(得分:6)
除了现有的两个答案(git reset
和git stash
)之外,我个人只是忽略了额外的提交(几乎有wip
的提交消息...)直到我我准备将变化推向遥远的地方,例如到github创建一个拉取请求。
此时,我使用git rebase -i
查看我在该分支中提交的所有提交,并计算出我想要推送的提交 - 将提交压缩在一起并根据需要重写提交消息。
我个人认为这比git stash
更容易使用,因为我通常会发现我忘记了什么东西是什么意思。 (我的错,而不是git中的一个缺陷,但效果仍然很糟糕。)我怀疑git reset
也没关系,但我总是在最终合并之前不得不重新定义 - 例如对代码审核评论作出反应 - 我git rebase
作为我工作流程中更具智力的部分。
答案 1 :(得分:3)
您可以正确使用git stash
。当有人来到您的办公桌时,请git stash
临时“搁置”您当前的工作。检查另一个分支,做你的事情,然后,当他们离开时,切换回你的工作分支并做git stash pop
。
确保您没有暂时进行任何更改 - git stash
,如果内存服务,则忽略暂存的更改和未跟踪的文件。
答案 2 :(得分:3)
切换回旧分支后,运行git reset HEAD^
,您将返回到之前的状态。最新的临时提交将被丢弃。如果您已推送该提交,则需要 - 强制执行新推送。
答案 3 :(得分:2)
听起来你需要git stash
。 Check out this site for usage.您的工作流程将如下所示:
git stash
(存储此分支的更改)
git checkout otherBranch
(然后做你的工作)
git checkout firstBranch
(回到原来的工作)
git stash apply
(将未提交的更改置于其后)
您还可以使用git rebase -i
删除一些现有的虚拟提交see this。