git - tag详解 - sourcetree打tag




撤消git拉,如何将回购旧状态 (5)

git pull会做两件事:它执行一个git fetch ,然后是一个git merge ,它会合并已经设置为在你的配置中合并的分支。

所以你想要做的就是撤消合并(撤消抓取并没有多大意义,也不需要)。

要做到这一点,你可以尝试使用git reset --hard来重置到以前的状态。 使用git-reflog命令查找先前状态的SHA-1,然后重置为它。

警告git reset --hard会删除所有未提交的更改。

有什么办法可以恢复或撤消git pull,这样我的源代码/回购将会在执行git pull之前进入旧状态? 我想这样做是因为它合并了一些我不想这样做的文件,但只合并其他剩余的文件。 所以,我想让这些文件回来,这可能吗? 谢谢 :)

编辑我想撤消混帐澄清。 看到一些答案后,我做到了

git reflog
bb3139b... [email protected]{0}: pull : Fast forward
01b34fa... [email protected]{1}: clone: from ...name...

现在,我该怎么办? 做git reset --hard好的? 我不想再拧它,所以要求详细的步骤?


你可以做git reset --hard ORIG_HEAD

因为在执行这些操作之前,“pull”或“merge”会将ORIG_HEAD设置为当前状态。


和jkp的答案一样,但是下面是完整的命令:

git reset --hard a0d3fe6

其中a0d3fe6是通过做

git reflog

并看看你想撤消的点。


如果你有gitk(尝试从你的git命令行运行“gitk - all”),这很简单。 只需运行它,选择您想要回滚的提交(右键单击),然后选择“将主分支重置为此处”。 如果您没有无限制的更改,请选择“硬”选项。


更现代的撤销合并的方式是:

git merge --abort

稍微老一点的方式:

git reset --merge

在以前的答案中描述的老派方式(警告:将放弃所有本地更改):

git reset --hard

但实际上,值得注意的是, git merge --abort只相当于git reset --merge因为MERGE_HEAD存在。 这可以在合并命令的git帮助中读取。

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

合并失败后,当没有MERGE_HEAD ,失败的合并可以通过git reset --merge来取消,但不一定要用git merge --abort所以它们不仅是同一事物的新旧语法 。 这就是为什么我发现git reset --merge在日常工作中更有用。





git-merge