2017-10-04 176 views
1

我做了一个git rebase来修改我以前的提交。该结构是这样的:HEAD->another_person's_commit->my_commit->...删除提交人

我修改my_commitgit rebase --continue再攀新高,第一次提交由另一人获得“改变”时,状态变为person commit with me。 I.E,他是提交人,我是一个“改变”提交的提交者。我知道git rebase将改变所有提交从修改之一(如创建一个新的分支,从它改变的角度)。

所以问题是有可能删除我的名字在他的提交?

+0

我希望你显示为提交者,他将显示为作者。那是你所看到的吗?另外:你*做了一些事情,他的承诺;你基于不同的代码。这不再是他所做的改变。 –

回答

1

在Git中,对提交的任何更改 - 即使只是一个不同的(修改)提交,实际上都会使子提交变成新的子提交。

如果底垫之前,你必须:

x - x - x - you - him - x 

再经过重订你真的有:

x - x - x - you - him - x 
     \ 
      you' - him' - x' 

即使你给him'完全一样的提交信息为him,因为在哈希him'是一个不同的父提交(you'),然后是him,这意味着哈希值将会改变(即使提交者信息保持不变) - 它不再是相同的提交。

现在,授予底垫居然删除链接you - him - x,他们会得到垃圾收集,只留下:

x - x - x - you' - him' - x' 

没有理由删除您的commiter - 它显示发生了什么事的真相。您可以通过将user.name和user.email更改为他的姓名和电子邮件来“伪造”,然后重新修改他的提交...并且可能有低级别的管道命令或其他方式直接使用标记。但为什么?没有什么可以获得的。他是原作者,现在你是这个新提交的提交者。

如果你想澄清发生了什么,你可以修改他的提交信息,以及添加一个注释:[由于rebase,没有改变重新发布]或类似的。