1. ホーム
  2. ギット

[解決済み】gitの親ポインタを別の親に設定する

2022-04-04 12:39:13

質問

ある親を指す過去のコミットがあり、それが指す親を変更したい場合、どのようにすればよいでしょうか?

どのように解決するのですか?

使用方法 git rebase . これは、Git の一般的なコマンドである "take commit(s) and plop it/them on a different parent (base)" のことです。

ただし、いくつか知っておくべきことがあります。

  1. コミットの SHA はその親を含むので、あるコミットの親を変更すると、その SHA も変更されます。 すべて は、開発ライン上でこのコミットより後 (このコミットより新しい) にあるコミットです。

  2. もしあなたが他の人と一緒に仕事をしていて、問題のコミットを相手がプルした場所にすでにプッシュしてしまった場合、そのコミットを修正することはおそらくBad Idea™でしょう。その結果、他のユーザーのリポジトリは、あなたのコミットの SHA が彼らのコミットの SHA と一致しなくなり、何が起こったのかを知るために混乱することになるからです。 (詳細はリンク先のマニュアルページの "RECOVERING FROM UPSTREAM REBASE" のセクションを参照してください)。

とはいえ、現在あるブランチにあるコミットを新しい親に移動させたい場合は、次のようになります。

git rebase --onto <new-parent> <old-parent>

これですべて移動します <old-parent> を現在のブランチに追加し、その上に <new-parent> の代わりに