通过合并提交还原更改并稍后重新合并
Reverting changes by a merge commit and re merging later
我在 Branch X 工作,并从由其他开发人员维护的 Branch Y 接收交货。
我将 Y 合并到 X 中,但需要将 Y 中一些错误提交的更改还原到文件 'KKK' 并在他们修复该文件时继续处理其他更改。这导致我在分支 X 中对文件 'KKK' [我从不经常接触] 进行还原提交。这意味着 'KKK' 在我的分支中恢复为 'Version A',而在分支中继续工作Y.(见图)
接下来,当 'KKK' 在 'Version I' 变得更加成熟时,我再次将 Y 合并到 X,这次期望 'KKK' 更新到 'Version I'.相反,git 自动接受我的还原提交 'Version A' 并在进行合并时忽略 'Version I'。该文件仍在 'Version A'。为什么会这样?我的工作方式有问题吗?
我感觉这与 'fast forward merges' 有某种关系,但我不确定。 I have tried to visualize this here.
提前致谢。
当你还原某些东西时,这意味着 "I don't want this change, ever"(因为它被破坏了)。
合并分支时,Git(或与此相关的任何 DVCS)仅合并来自新提交的新更改。您还原的更改已经合并,因此不会重新合并(否则整个还原点都是徒劳的——SCM 怎么知道哪些还原是真正的还原,哪些不是?)。
视觉上:
A-B-M-C'--X-... <- branch a
/ /
C-D-----E--.. <- branch b
提交 C
引入更改并提交 C'
恢复所述提交的更改。提交 M
和 X
都是合并。当您第一次调用合并来创建提交 M
时,C
和 D
的所有更改都包括在内。当您 运行 第二次合并提交 X
时,只有 E
的更改被合并,因为分支 b
的所有其他更改已经存在于分支 a
.
现在,如何将初始和后续更改放入分支a
?在再次合并分支 b
之前重新还原提交,换句话说 运行 git revert C'
。这样,分支 a
再次包含原始更改,然后再应用任何新更改(例如提交 E
)。
我在 Branch X 工作,并从由其他开发人员维护的 Branch Y 接收交货。 我将 Y 合并到 X 中,但需要将 Y 中一些错误提交的更改还原到文件 'KKK' 并在他们修复该文件时继续处理其他更改。这导致我在分支 X 中对文件 'KKK' [我从不经常接触] 进行还原提交。这意味着 'KKK' 在我的分支中恢复为 'Version A',而在分支中继续工作Y.(见图)
接下来,当 'KKK' 在 'Version I' 变得更加成熟时,我再次将 Y 合并到 X,这次期望 'KKK' 更新到 'Version I'.相反,git 自动接受我的还原提交 'Version A' 并在进行合并时忽略 'Version I'。该文件仍在 'Version A'。为什么会这样?我的工作方式有问题吗?
我感觉这与 'fast forward merges' 有某种关系,但我不确定。 I have tried to visualize this here.
提前致谢。
当你还原某些东西时,这意味着 "I don't want this change, ever"(因为它被破坏了)。
合并分支时,Git(或与此相关的任何 DVCS)仅合并来自新提交的新更改。您还原的更改已经合并,因此不会重新合并(否则整个还原点都是徒劳的——SCM 怎么知道哪些还原是真正的还原,哪些不是?)。
视觉上:
A-B-M-C'--X-... <- branch a
/ /
C-D-----E--.. <- branch b
提交 C
引入更改并提交 C'
恢复所述提交的更改。提交 M
和 X
都是合并。当您第一次调用合并来创建提交 M
时,C
和 D
的所有更改都包括在内。当您 运行 第二次合并提交 X
时,只有 E
的更改被合并,因为分支 b
的所有其他更改已经存在于分支 a
.
现在,如何将初始和后续更改放入分支a
?在再次合并分支 b
之前重新还原提交,换句话说 运行 git revert C'
。这样,分支 a
再次包含原始更改,然后再应用任何新更改(例如提交 E
)。