我已经将一些项目从 github 克隆到我的项目中,一切正常,我很高兴。
但是在一些 git pull 之后,我的项目与上游项目的新提交发生了一些冲突。
我想回滚到以前的结帐,但我不知道我的项目中以前哪个稳定结帐。
我如何知道它并回滚到以前稳定的(对我而言)项目结帐?我理解从长远来看更正确的方法来解决我与上游仓库的冲突,但有时我只需要回滚到以前的版本,以获得解决问题的时间。
我已经将一些项目从 github 克隆到我的项目中,一切正常,我很高兴。
但是在一些 git pull 之后,我的项目与上游项目的新提交发生了一些冲突。
我想回滚到以前的结帐,但我不知道我的项目中以前哪个稳定结帐。
我如何知道它并回滚到以前稳定的(对我而言)项目结帐?我理解从长远来看更正确的方法来解决我与上游仓库的冲突,但有时我只需要回滚到以前的版本,以获得解决问题的时间。
如果您有一个可以执行的命令/脚本,并且可以说明一个“稳定点”(即某些工作,而不是当前不工作的状态),那么您可以考虑一个git bisect
命令。
请参阅“如何使用 git bisect? ”。
这将帮助您隔离“它正在工作”的最后一次提交。
git reflog
应该告诉你操作的顺序,最近的在前。查找在您第一次拉取/合并之前操作的提交 ID;checkout
或reset --hard
到那个。
您是否已经提交了合并?如果没有,就git reset --hard
和你回到你发出之前的状态git pull
。否则,git reset --hard HEAD^
(如果合并是最后一次提交)可以解决问题,因为 git 默认情况下总是选择合并提交的第一个父级,即您的分支。如果有疑问,您可以随时使用 eggitk
来检查情况并找到分支上的最后一次提交,复制其 SHA1 哈希并恢复为该状态。