Windows Git还原本地提交
我在windows上的phpstorm中连接了一个git回购。我提交了一些变更集,然后将它们推到我们的“中央回购”中。在此之后,我又做了一些承诺。我不再希望这些承诺没有被推到中央回购。如何清理我的工作副本以使其与中央回购(原始)相同?如果您对此有把握并且没有任何未提交的本地更改,请执行以下操作: 其中Windows Git还原本地提交,windows,git,msysgit,Windows,Git,Msysgit,我在windows上的phpstorm中连接了一个git回购。我提交了一些变更集,然后将它们推到我们的“中央回购”中。在此之后,我又做了一些承诺。我不再希望这些承诺没有被推到中央回购。如何清理我的工作副本以使其与中央回购(原始)相同?如果您对此有把握并且没有任何未提交的本地更改,请执行以下操作: 其中origin/master是您推送到的分支 ref日志仍将包含还原的位,直到垃圾回收使其过期。要恢复恢复,请执行以下操作: git reset --hard HEAD@{1} 优于/HEAD,因为
origin/master
是您推送到的分支
ref日志仍将包含还原的位,直到垃圾回收使其过期。要恢复恢复,请执行以下操作:
git reset --hard HEAD@{1}
优于/HEAD
,因为您不会看到以下内容:
$ git status
On branch MY/BRANCH
Your branch and 'origin/MY/BRANCH' have diverged,
and have 1 and 1 different commit each, respectively.
根据我的理解,您创建了一些在中央回购上推动的提交,之后您创建了一些更多的提交,但这些都存在于本地回购上。这些都没有推动中央回购 删除/恢复本地提交
git reset HEAD~{number_of_commit}
简单地说,在命令提示符下点击git log
,获得提交列表。看一看,您现在已经创建了多少次提交,还有多少次需要恢复
例如,您必须删除。还原最后两次提交,然后单击
git reset HEAD~2
有另一种方法可以通过中央回购重置本地回购。但是,在这种情况下,您的本地提交将被删除,如果其他用户在中央回购上推送提交,那么您的回购将被更新
命令是:
git reset --hard remotes/origin/HEAD
您可以通过以下方式还原本地提交:
git reset HEAD~N
其中N用于恢复提交的数量。例如:
如果必须从本地恢复单个提交,则可以使用
git reset HEAD~1
或
git reset HEAD^我知道这是一种“我早就告诉过你了”的评论,但这就是git用户强烈主张在你做任何工作之前创建一个新的本地分支的原因,因为这样你就可以切换回master并从这里开始一个新分支,而不必担心删除以前的提交(在某些情况下,您可能希望稍后再讨论这些问题)。
git reset --hard remotes/origin/HEAD
git reset HEAD~N
git reset HEAD~1