Git:合并前如何返回
谢谢你的帮助。 我真的很困惑 我合并了一个拉队友的请求 现在我想回到合并之前的情况,因为我已经意识到引入了bug。 拉请求是由一个朋友在24号完成的,我在24号完成了合并Git:合并前如何返回,git,Git,谢谢你的帮助。 我真的很困惑 我合并了一个拉队友的请求 现在我想回到合并之前的情况,因为我已经意识到引入了bug。 拉请求是由一个朋友在24号完成的,我在24号完成了合并 我需要回到20岁的情况 队友所做的改变会发生什么?我能再次看到/使用它们吗 谢谢 commit ff1e9ecfa13c5050957b77bd5b5695d802415867 Merge: 053c894 437e11c Author: me Date: Tue Mar 24 09:06:11 2015 +0100
- 我需要回到20岁的情况
- 队友所做的改变会发生什么?我能再次看到/使用它们吗
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
命令中指定的提交之后添加的所有更改
Ex:
在我目前的分支机构,我有以下承诺:
A
|
B <- commit *before* the merge
|
|
| --- some other branch
| /
|/
C <- commit where "some other branch" was merged into current branch
|
D
|
E
A
|
B您的队友的提交以及您所做的合并提交都在您的存储库中。您可以将标签放回合并前的位置,如果您希望将来引用您的队友的提交,请添加新标签
像这样的,对吧?我想我已经把标签贴得够近了:
...053---ff1 master
/
...a17---437 teammate
/
...adf other
要重置标签,如果最近的签出不是主签出,只需将标签强制放置到新位置即可。否则,您必须首先签出另一个引用(或普通提交),或者随后进行签出
您希望master回到合并的第一个父级,并且将其签出也不会太糟糕,因此:
git tag wip
git checkout -B master master^1
现在,master
指的是053
,wip
指的是ff1
,其他都没有改变。wip
引用让git知道您仍然在引用它及其历史记录。您已经从合并签出之前获得了master
commit,并且master
又回到了引用它的位置。强制重新标记和签出git checkout-B$commit$ref
在移动当前签出时有一个快捷方式,git reset--hard$ref
如果您没有或希望签出master:
git branch -f master master^1
这跳过了所有的工作树搅动
如果您移动了一个标签,并且意识到您确实应该首先标记旧的提交,那么您可以通过reflogs引用它,可以是标签的上一个目标,也可以是您的上一次签出,具体取决于:git tag wip@{1}
标记您的上一次工作树提交和git tag wip master@{1}
标记上一个master
commit。显示了所有可以引用提交的方式,从提交的数量中,您可能会猜到,人们最终不会太在意临时名称,而是直接引用机上工作使用的提交,这完全正确。您是想在合并前暂时返回查看提交时的情况,还是永久恢复合并?@siride谢谢,我需要返回,可能需要重新进行合并(但这次只接受正确的代码更改)合并后,git checkout
如何撤销必要的更改?分支提示应该仍然存在并命名。对不起,我已经修改了我的答案,因为我的意思是git reset
而不是git checkout
。感谢jefflunt,为了理解,在此之后,我如何再次合并有问题的分支(这是一个pull请求)?为什么不使用还原-m
?