1. ホーム
  2. git

[解決済み] リベース後にGitブランチが分岐した

2022-04-27 13:03:01

質問

既にプッシュされているブランチをローカルにリベースしました。

Git は、私のブランチとリモートが分岐しているため、次のように通知しています。

それぞれ 109 と 73 の異なるコミットがあります"。

私のブランチをプッシュすれば解決するのでしょうか?

解決方法は?

ブランチをリベースする際には、リベース先のブランチのコミットよりも上位にあるコミットをすべて書き直さなければなりません。これは、コミットのプロパティのひとつがその親であるためです。リベースすると、ブランチ上でもっとも古いローカルコミットの親を変更することになります。この変更はコミット全体に波及するので、すべてのローカルコミットのコミットハッシュを変更することになります。

すでにブランチをプッシュしていたのですから、リベースするのではなくソースブランチにマージするべきだったのです。新しいブランチを "強制的にプッシュすることは可能です ( -f しかし、通常のプッシュではうまくいきません。ブランチの履歴の整合性が損なわれてしまうからです。このブランチで他の人と共同作業をしている場合、強制プッシュをするのはよくありません。

TL;DR - 共同研究をしていないのなら、push -f を使ってブランチをプッシュしてください。共同作業をしている場合は、ブランチを以前の状態に戻し、代わりにソースブランチをマージしてください。