[英]Git: how to go back before merge
谢谢你的帮助。 我真的很困惑......
我合并了队友的拉请求。
现在我想回到合并之前的情况,因为我已经意识到引入了错误。 拉请求是由朋友在24上完成的,我在24上做了合并。
谢谢!!!
commit ff1e9ecfa13c5050957b77bd5b5695d802415867
Merge: 053c894 437e11c
Author: me
Date: Tue Mar 24 09:06:11 2015 +0100
Merged ' changes on xxx
commit 437e11c23ae7da68f8bb3698557bdc2aa3d9a614
Merge: a129401 adfd8c5
Author: someone else
Date: Tue Mar 24 00:00:18 2015 +1000
Merge pull request #17 from
xxx
commit adfd8c5c30541095ee48ce64da14740f92594ec8
Author: someone else
Date: Mon Mar 23 23:54:06 2015 +1000
xx
commit 053c89426460ffaa86873bed342bc38e24a13096
Merge: 849ec63 35fdbc6
Author: me
Date: Fri Mar 20 07:57:13 2015 +0100
假设您没有删除原始更改出现的分支,那么您的队友的工作仍然位于该分支上,所以只要您仍然拥有更改所在的分支,我就不会担心会丢失这些更改制作。
您可以执行git reset --hard [commit hash]
以在合并之前返回提交,这就像回到过去一样。 但是,您还将撤消在reset
命令中指定的提交后添加的任何更改(如果有)。
例如:
在我当前的分支上,我有以下提交:
A
|
B <- commit *before* the merge
|
|
| --- some other branch
| /
|/
C <- commit where "some other branch" was merged into current branch
|
D
|
E
如果我执行git reset --hard B
那么我将在C
merge
之前返回提交。 但是我也会在这个过程中丢失承诺D
和E
一旦你这样做,只需检查分支的状态,并确保它看起来像你需要它,然后执行git push --force
,它将远程仓库更新为此状态。 你需要的原因--force
是因为你将从远程仓库的当前分支中删除提交D
和E
,如果没有--force
选项, git
将不允许你这样做,因为你要求它删除工作。
根据这些更改的实质程度,有时更容易前滚并修复错误,而不是尝试撤消更改。 那条线(前进或后退)是个案决定。
您的队友的提交都在您的存储库中,以及您所做的合并提交。 您可以将标签放回合并之前的位置,如果您希望将来引用您的队友提交,请添加新标签。
这样的事,对吧? 我想我的标签足够接近:
...053---ff1 master
/
...a17---437 teammate
/
...adf other
要重置标签,如果您最近的结帐不是master
您只需将标签强制到新的位置即可。 否则,您必须先检查另一个引用(或普通提交)或结帐。
你想让master回到合并的第一个父级,并且检查它也不会那么糟糕,所以:
git tag wip
git checkout -B master master^1
现在master
指的是053
, wip
指的是ff1
,没有别的改变。 wip
参考让git知道你还在引用它及其历史。 你已经在合并签出之前获得了master
提交,而master
又回到了引用它。 force-relabel-and-checkout git checkout -B $commit $ref
有一个快捷方式,如果你正在移动当前的结账, git reset --hard $ref
。
如果您没有或希望主签出:
git branch -f master master^1
并且跳过所有工作树流失。
如果您移动标签并且您意识到您确实应该首先标记旧提交,您可以通过reflogs(标签的上一个目标或之前的结帐)来引用它,具体取决于: git tag wip @{1}
来标记您之前的标签worktree commit和git tag wip master@{1}
标记以前的master
提交。 git revisions
显示了你可以引用提交的所有方法,从你可能猜到的人数来看,人们最终不会打扰临时名称而只是直接参考机上工作所使用的提交,这是完全正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.