2017-10-04 127 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,沒有改變重新發布]或類似的。