Git:如何在合并之前返回

Lis*_*nne 6 git

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

我合并了对队友的请求。

现在,我想回到合并之前的情况,因为我已经意识到引入了错误。拉请求是由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
Run Code Online (Sandbox Code Playgroud)

jef*_*unt 6

假设您没有删除原始更改所在的分支,那么来自队友的工作仍位于该分支上,因此,只要您仍然拥有更改所在的分支,我就不必担心丢失这些更改。制作。

您可以执行a 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
Run Code Online (Sandbox Code Playgroud)

如果这样做,git reset --hard B我将回到mergeat 之前的提交C。但是,我还会失去提交D,并E在这个过程中。完成此操作后,只需检查分支的状态并确保它看起来像您需要的样子,然后执行git push --force,即可将远程存储库更新为该状态。您之所以需要这样做,--force是因为您将从远程仓库上的当前分支中删除提交D和内容E,并且git在没有该--force选项的情况下也不允许这样做,因为您正在要求它删除工作。


根据这些更改的实质性程度,有时候前滚并修复错误比尝试撤消更改要容易得多。这条线的位置(前进或后退)是一个个案决定。