4
はあなたが現在のブランチとしてCで、以下のリビジョングラフがあるとします。なぜgit rebase - on a b、git rebase --onto bはオリジナルとは異なるSHA1を作成するのですか?
c a
\/
b
git rebase --onto a b
は、次のように作成されます。
c
/
a
/
b
とgit rebase --onto b a
にグラフを返します。
c a
\/
b
ただし、cの新しいSHA1は、両方の再編成の前にcの古いSHA1とは異なります。これはなぜですか?
興味深いです。私が混乱していたのは、リベースが実行されている新しいベースを過ぎて追加のコミットがなかったときにSHA1を変更していないということでした。新しい基盤を超えて余分な仕事をしているのであれば、新しいコミットの作成が必要になり、新しいタイムスタンプが必要になるでしょう。 – jonderry
@jonderry:私はrebaseはそれが必要ない場合は何もしない知的であると信じています。 – Cascabel
私はタイムスタンプを歴史*のように指摘しません。コミットには親があり、それはハッシュに含まれています。親が変更された場合、コミットは変更されます。親が変更されず、コミットに関するその他の変更がない場合、必ずしも何もする必要はありません。 – Dustin