我确实更新了一个文件并提交了更改(efe5e5d (HEAD, master) change about caption
),然后在最近更改了上游代码时解除了git pull upstream
,这当然导致了冲突。
git show-ref
efe5e5d65603419288e40b8e964aecba4626c99f refs/heads/master
879020dbcd1cf1f797577b66a9416c1007a1ad29 refs/remotes/upstream/HEAD
20e54d8ccaa4dba7890fa5db2e89394ab33a0c81 refs/remotes/upstream/dev
879020dbcd1cf1f797577b66a9416c1007a1ad29 refs/remotes/upstream/master
<<<<<<< HEAD
<a href="about.html" class="btn btn-success">Goto About</a>
=======
<a href="about.html" class="btn btn-success">About Page</a>
>>>>>>> 879020dbcd1cf1f797577b66a9416c1007a1ad29
git status
Your branch and 'upstream/master' have diverged,
and have 1 and 1 different commit each, respectively.
(use "git pull" to merge the remote branch into yours)
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: index.html
git log
* efe5e5d f72465f (HEAD, master) change about caption
* f72465f 28645ce add link button
* 28645ce 48c2640 20e54d8 Merge branch dev'
问题如何将此最后git pull upstream
回滚到旧状态?
这样做的目的是学习,这不是真正的代码。我想我不能使用git reset
,我认为以下内容是相关的。
git update-ref refs/remotes/upstream/master refs/remotes/upstream/master@{1}
git checkout -- index.html
(我不确定,因为通常git状态会暗示这一点)refs/remotes/upstream/HEAD
?请指导谢谢。
我想我找到了解决这个问题的方法。
git merge --abort
git update-ref refs/remotes/upstream/master refs/remotes/upstream/master@{1}
通过这两个命令,我可以再次触发git pull upstream
,就像以前从未发生过一样。
答案 0 :(得分:1)
在执行git pull
时,您的跟踪分支会更新,并在远程分支和本地分支之间执行合并。如果发生冲突,合并将在两者之间停止,允许您解决它们,然后转到git commit
。看看这个:
You have unmerged paths.
(fix conflicts and run "git commit")
合并在git commit
之后完成。因此,要返回分支在git pull upstream
之前的状态,您必须进行硬重置,因为更改仍然未合并。
git reset --hard
它将删除所有分阶段的更改。要同时删除冲突的文件(未加载的文件),请执行以下操作。
git add index.html
git reset --hard