Git陷入错误的分支

mil*_*lus 69 git branch pull undo

我和其他开发人员一直在合并并将我们的工作推向一个名为"工具"的非主分支.这样,我们没有影响团队的其他成员.我的主题分支叫做DPM-93,我的git工作流就是这个.

# do some work
git checkout DPM-93
git commit -m "did some work"

# catch up
git checkout toolwork
git pull origin toolwork

# rebase my topic branch
git checkout DPM-93
git rebase toolwork

# merge and push my changes
git checkout toolwork
git merge --no-ff DPM-93
git push origin toolwork
Run Code Online (Sandbox Code Playgroud)

在我意外发出这些git命令之前,这大部分工作正常

git checkout toolwork
git pull origin master
Run Code Online (Sandbox Code Playgroud)

那时,一堆新东西出现在分支工具中,我不知道如何摆脱它删除我的工作区并重新克隆回购.

在拉动之前有没有办法将其支持到状态?

Von*_*onC 99

git reset --hard ORIG_HEAD 
Run Code Online (Sandbox Code Playgroud)

git reset手册页(如果你刚刚拉动):

撤消合并或拉动

$ git pull                         (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard                 (2)
$ git pull . topic/branch          (3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD       (4)
Run Code Online (Sandbox Code Playgroud)
  1. 尝试从上游更新导致了很多冲突; 你现在还没有准备好花很多时间合并,所以你决定稍后再这样做.
  2. " pull"没有进行合并提交,因此" git reset --hard"是" "的同义词,git reset --hard HEAD从索引文件和工作树中清除了混乱.
  3. 将主题分支合并到当前分支,这导致快进.
  4. 但是你决定主题分支尚未准备好供公众使用.
    "pull"或"merge"总是保留当前分支的原始提示ORIG_HEAD,因此重新设置它会使索引文件和工作树返回到该状态,并将分支的提示重置为该提交.

HEADORIG_HEAD更多.


Hom*_*osa 70

重置主分支:

git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)

  • 不确定这是否是由于2年前的"正确"答案,但在尝试了其他没有运气的建议后,这对我有用. (10认同)
  • 这是唯一对我有用的答案. (4认同)
  • 这解决了我遇到的问题,即我已进入错误的分支 (3认同)
  • 为我工作.谢谢 (2认同)

Cam*_*ner 9

您可以使用git log查找要作为toolwork分支头部的修订版的SHA-1 ,然后使用git reset --hard <SHA1>将工作副本还原到该修订版.

先备份一切!并重新阅读手册页git reset以确保它正在执行您想要的操作.

编辑:哦,是的,ORIG_HEAD应该包含正确的SHA-1.但先检查一下.


zel*_*nix 6

我最近做了类似的事情,并根据这个答案使用了一个更简单的解决方案。

假设toolwork您要恢复到的分支的状态已被推送到origin,您可以简单地执行

git fetch origin
git reset --hard origin/toolwork
Run Code Online (Sandbox Code Playgroud)

就我而言, 的值ORIG_HEAD已被不同分支上的另一个合并覆盖,这样做我不必担心在日志中搜索正确的提交。