一个队友在master中做了一些修复,我正试图将我的分支(feature / me / foo,在0f0后有三个提交)重新绑定到它上面。
如果我只是改变,那么三方合并会破坏我所有的变化(在他改变的三个文件中)。所以我找到了这个甜蜜的命令:
$ git rebase -s ours master
除了它根本不是我想要的:
$ git log
commit 20dee42d3e7c06f94618d4e39e84bc07ad2aff9f
Author: [him]
Date: Fri Jun 10 14:09:35 2016 -0700
commit 0f0dac94a0094817a3191f699b1b438ec89aaec2
Author: [me]
Date: Fri Jun 10 09:14:47 2016 -0700
我的最后三次提交(0f0之后)消失了,并被他的替换。没问题。我只想恢复:
( feature/me/foo ) 11:16:35 > git fetch --all
Fetching origin no slots
( feature/me/foo ) 11:16:45 > git reset --hard
feature/me/foo HEAD is now at 20dee42 + minor updates:
...除了我仍然指着他的变化,而不是我分支的最新消息。如果我核实并克隆,我会回到我的分支上的正确状态。
将我的分支“硬重置”到远程状态的正确方法是什么?
答案 0 :(得分:0)
使用遥控器硬重置分支:
git checkout another-branch
git checkout /remotes/origin/master
git branch -D master
git checkout master
想法是移动到另一个分支,移动到远程refence,删除master,最后crear一个链接到远程分支的新主分支。
这不是一个好习惯,但可能会解决您的问题。
答案 1 :(得分:0)
尝试在reflog中找到您想要提交的SHA并重置为它。
git reflog # find SHA or short name, for example 0f0dac94
git reset --hard 0f0dac94
答案 2 :(得分:0)
如果你的分支有上游设置,那么只需
git reset --hard @{u}
(@{u}
或@{upstream}
表示“当前分支的上游”。)
否则,请使用远程分支名称:
git reset --hard origin/branch_name