撤消git的拉动下,如何将回购老态
-
11-07-2019 - |
题
有没有办法恢复或撤消git的拉动,使我的源/回购将来到老态,这是做的git拉过吗? 我想这样做,因为它合并,我不想这样做了一些文件,但只合并其他剩余的文件。所以,我想这些文件回来,这可能吗? 感谢:)
编辑我想撤消git的合并澄清。 看到一些答案后,我这样做
git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...
现在,我该怎么办?这样做git reset --hard
是OK?我不想再拧它,所以要求的详细步骤?
解决方案
git pull
会做两件事情:它确实git fetch
,然后在那里合并已建立分支机构在你的配置要合并一个git merge
所以,你想要做的是撤消合并(撤消取不使一个很大的意义,不应该是必要的)。
要做到这一点,你可以尝试使用git reset --hard
重置到以前的状态。使用混帐引用日志命令查找SHA-1之前的状态,然后复位到它。
警告强>:git reset --hard
删除所有提交的更改。
其他提示
同JKP的答案,但这里是完整的命令:
git reset --hard a0d3fe6
其中a0d3fe6通过进行结果
git reflog
和看在你想撤销的地步。
要撤消合并的更现代的方式是:
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 reflog
找到你的SHA您previus状态和使(HEAD @ {1}是一个例子)
git reset --hard HEAD@{1}
如果您已经gitk(尝试“从您的git命令行gitk --all”运行),这很简单。只要运行它,选择提交要回滚到(右键单击),然后选择“重置主分支在这里”。如果您有没有未提交的更改,选择的是“硬”的选项。
假设$COMMIT
为您进行git pull
前的最后一个提交ID。
什么,你需要撤消上次的拉力
的 git reset --hard $COMMIT
强>
加成:
在上拉的讲,我想共享一个有趣的特技,
的 git pull --rebase
强>
此上述命令是在我的GIT中生活的最有用的命令,它保存了大量的时间。
推你的新承诺服务器之前,试试这个命令,它会自动同步最新的服务器改变(与取+合并),并把你的承诺在git的日志上。无需担心手动拉/合并。
您可以做git reset --hard ORIG_HEAD
因为“拉”或“合并”设置ORIG_HEAD执行这些操作之前要在当前状态。
这是恢复你拉变化的最简单的方法。
git reset --hard 9573e3e0
其中9573e3e0
是您的{提交ID}
如果有一个失败的合并,这对于想撤消git pull
的最常见原因,运行git reset --merge
确实人们所期望的正是:守取文件,但撤消git pull
试图合并的合并。然后,一个可以决定如何不说git merge
有时产生杂波做。而且它并不需要一个发现这--hard
在所有其他的答案中提到的确切提交ID需要。