0

基于以下git场景:

 C0 (master)
   \
    \
     C1-------------C5 (develop)
      \            /
       \          /
        C2--C3--C4 (feature)

我有一个新的未提交文件,我想将它作为提交 C0 的一部分添加到 master 中。所以我所做的是检查master然后修改以便将文件添加到C0中。

一切看起来都找到了,但我遇到的问题是 C0 哈希发生了变化并导致 C1 丢失了引用。

 C0 (master)


     C1-------------C5 (develop)
      \            /
       \          /
        C2--C3--C4 (feature)

我基本上是 git 新手,我确定我做错了什么。对于如何再次“链接”C0 和 C1,我将不胜感激。

可能是最佳实践,应该是在master中创建一个新的提交(C6),然后在develop中合并,但我想知道是否有办法为未来的情况解决这类问题,也许“修改”成当前提交是最好的选择。

4

1 回答 1

1

假设至少有一个分支masterdevelop并且feature也被其他人使用,应该避免这种对 git 提交历史的重写,因为其他人的工作已经基于确切的提交共享历史(提交图)。

修改一个提交是一个历史重写动作。

为了完整起见,并且在所有这些分支都是本地存储库私有的情况下,在C0不丢失图形连接的情况下修改提交的方法是使用适当的 git 历史重写工具,例如git-filter-repo

可以使用更简单的历史(更线性)重写git rebase -i

于 2020-07-06T18:00:50.480 回答