“git revert”中的“他们”和“我们”是谁?

Gab*_*les 6 git git-revert merge-conflict-resolution

在 a 期间,我无法理解这些冲突中的us人和them是谁git revert,所以我真的不知道这里发生了什么:

git revert some_commit_hash
Run Code Online (Sandbox Code Playgroud)

然后git status显示如下冲突:

deleted by them: path/to/file1.h
both modified:   path/to/file2.h
deleted by them: path/to/file1.cpp
deleted by them: path/to/test_file1.cpp
added by us:     path/to/file3.h
deleted by them: path/to/file4.h
added by us:     path/to/file5.h
Run Code Online (Sandbox Code Playgroud)

“我们”是谁?“他们”是谁?

更新:请注意,我正在还原的提交是一个非常大的合并提交。


不重复:

  1. 因为它没有说明谁是usthemGIT:“被我们删除”冲突有多危险?
  2. 因为它涵盖mergeandrebase但 NOT revert,并且 git 经常使用相同的术语来表示相反的事情,具体取决于操作:根据 Git,谁是“我们”,谁是“他们”?
  3. 因为它没有提到“我们”和“他们” - Git - 还原还原,冲突

LeG*_*GEC 5

当发生冲突时,适用于所有情况的规则是:

  • ours/us是当前的状态HEAD(活动提交)
  • theirs/them是另一方的状态(提交被合并,提交被挑选/重新定位,或者在你的情况下你想要恢复的提交的“反向”)

rebase(回答@GabrielStaples 的评论)的情况下的一些额外说明:

如果您在my/branch,并且您运行git rebase other/branchgit将签出 的头部提交other/branch并开始重放顶部的一些提交。

如果发生冲突,由于检出的提交来自other/branchours将大致代表other/branch,并且theirs将是my/branch

这部分与“ours应该是我的更改”的直觉相反,但它符合上面的描述:冲突时,检出的提交是ours,另一侧(正在重播的提交)是theirs


eft*_*ft0 0

嗯……revert这是一个非常特殊的情况。那么,想想一个正常的合并,有共同的祖先和所有的东西,整个包,对吧?现在,整个事情的工作原理与合并相同,除了(这是一个很大的例外)合并引擎强制 the common ancestor成为您要恢复的修订版,并且the other branch是该修订版的父级