Git:合并前如何返回

Git:合并前如何返回,git,Git,谢谢你的帮助。 我真的很困惑 我合并了一个拉队友的请求 现在我想回到合并之前的情况,因为我已经意识到引入了bug。 拉请求是由一个朋友在24号完成的,我在24号完成了合并 我需要回到20岁的情况 队友所做的改变会发生什么?我能再次看到/使用它们吗 谢谢 commit ff1e9ecfa13c5050957b77bd5b5695d802415867 Merge: 053c894 437e11c Author: me Date: Tue Mar 24 09:06:11 2015 +0100

谢谢你的帮助。 我真的很困惑

我合并了一个拉队友的请求

现在我想回到合并之前的情况,因为我已经意识到引入了bug。 拉请求是由一个朋友在24号完成的,我在24号完成了合并

  • 我需要回到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