sourcetree打tag - gitlab tag



Git陷入错误的分支 (4)

对我有用的是简单的

git reset --hard

我用不幸的合并/拉动从本地存储库中做到了这一点:

[email protected] /d/Google Drive/xxxxxxx/Github/xxxxx (staging_ec2|MERGING)
$ git reset --hard
HEAD is now at 2d5a511 [last commit comment]

[email protected] /d/Google Drive/xxxxxxx/Github/xxxxx (staging_ec2)
$

我和其他开发人员一直在合并并将我们的工作推向一个名为“工具”的非主分支。 这样,我们没有影响团队的其他成员。 我的主题分支叫做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

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

git checkout toolwork
git pull origin master

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

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


Answer #1

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

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

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


Answer #2

重置主分支:

git reset --hard origin/master

Answer #3
git reset --hard ORIG_HEAD 

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)
  1. 尝试从上游更新导致了很多冲突; 你现在还没有准备好花很多时间合并,所以你决定稍后再这样做。
  2. pull ”没有进行合并提交,因此“ git reset --hard ”是“ git reset --hard HEAD ”的同义词,它清除了索引文件和工作树中的混乱。
  3. 将主题分支合并到当前分支,这导致快进。
  4. 但是你决定主题分支尚未准备好供公众使用。
    “pull”或“merge”总是将当前分支的原始提示ORIG_HEADORIG_HEAD ,因此重新设置它会使索引文件和工作树返回到该状态,并将分支的提示重置为该提交。

有关更多信息,请参阅HEADORIG_HEAD





pull