Git:取消提交的命令
当我工作时,我经常遇到以下工作流:Git:取消提交的命令,git,Git,当我工作时,我经常遇到以下工作流: 做点什么 有人来到我的办公桌前问我一些问题,我必须搬到另一家分店去检查 我在当前分支上提交代码并签出另一个分支 当我完成后,我结帐旧分行并继续工作 此工作流有一个缺点:它在我的系统中生成一个虚拟提交。我的问题是:我如何避免这种情况?例如,当我回来工作时,我将取消上一次提交?您可以使用git stash来实现这一点。当有人来到你的办公桌旁时,做一个git stash暂时“搁置”你当前的工作。检查另一个分支,做你自己的事情,然后,当他们离开时,切换回你的工作分支,
此工作流有一个缺点:它在我的系统中生成一个虚拟提交。我的问题是:我如何避免这种情况?例如,当我回来工作时,我将取消上一次提交?您可以使用
git stash
来实现这一点。当有人来到你的办公桌旁时,做一个git stash
暂时“搁置”你当前的工作。检查另一个分支,做你自己的事情,然后,当他们离开时,切换回你的工作分支,做git stash pop
确保没有任何更改处于暂存状态,但是-
git stash
,如果内存可用,则会忽略暂存的更改和未跟踪的文件。切换回旧分支后,运行git reset HEAD^
,您将返回到以前的状态。将丢弃最新的临时提交。如果你已经推送了提交,你需要--强制一个新的推送。听起来你需要git-stash
。您的工作流程将如下所示:
git stash
(隐藏对此分支所做的更改)
git checkout otherBranch
(然后完成您的工作)
git checkout firstBranch
(返回原始作业)
git stash apply
(将未提交的更改放回原处)
您还可以使用
git-rebase-i
删除一些现有的虚拟提交。除了两个现有答案(git-reset
和git-stash
)之外,我个人只会忽略额外的提交(几乎有一条提交消息wip
)直到我准备好将更改推送到远程位置,例如到github以创建拉取请求
此时,我使用git rebase-I
查看该分支中的所有提交,并确定要推送哪些提交—将提交挤压在一起,并根据需要重新编写提交消息
我个人发现这比git stash更容易使用,因为我通常会发现我不知道隐藏的目的是什么。(我的错不是git中的缺陷,但效果仍然不好。)我怀疑git reset
也可以,但由于在最终合并之前我通常必须重新设置基址(例如,为了对代码审阅评论作出反应),我将git-rebase
作为我工作流程中更有效的一部分 使用隐藏你可以在这里找到你的答案