Git で特定のコミットにリベースする
この記事では、Git で特定のコミットにリベースするプロセスについて説明します。 これを実現する方法を説明するために、いくつかのシナリオを使用します。
git rebase --onto
コマンドを使用して、ブランチを特定のコミットにリベースします。 すぐに飛び込みましょう。
Git で特定のコミットにリベースする
ブランチを別のブランチにリベースしてコミットを指定する必要がある場合は、--onto
フラグを使用します。
基本的な構文:
git rebase –onto <new-parent> <old-parent> <head-of-new-parent>
シナリオの例を見てみましょう。
使用する基本的なワークフローは次のとおりです。
main
の特定のコミットに new-feature
をリベースする
最初のシナリオでは、ブランチ全体をリベースせずに main
でコミットを使用したいと想定しています。 これには、実行中のコミットの SHA-1
に注意する必要があります。
git log <branch-name>
を使用して、コミットのハッシュを取得できます。
私たちの場合、new-feature
ブランチのコミットを main
ブランチの 846e2fa
コミット (最後から 2 番目) に移動したいと考えています。 以下を実行します。
$ git rebase –onto 846e2fa bd9172c
上記のコマンドには、以下に示す効果があります。
new-feature
全体を移動したかったので、コマンドに 3 番目の引数は必要ありません。 3 番目の引数を省略した場合、Git はデフォルトでブランチ全体を移動します。
new-feature
を main
の特定のコミットにリベースし、new-feature
の最初のコミットを削除する
e2ff2bc
が依存関係であり、コミット 846e2fa
でブランチを main
に移動したいとします。これは、同じ依存関係です。 簡単に言うと、new-feature
を main
の 846e2fa
にリベースし、new-feature
の最初のコミットを省略したいと考えています。
方法は次のとおりです。
$ git rebase –onto 846e2fa e2ff2bc
上記のコマンドには、以下に示す効果があります。
git rebase -onto
コマンドは、親コミットを参照として受け取ります。 簡単に言えば、保存したいコミットの前にコミットを参照することになっています。
new-feature
を main
の特定のコミットにリベースし、new-feature
の最後のコミットを削除する
new-feature
を 846e2fa
に移動したいが、new-feature
のコミット d7dbeb
を省略したいとしましょう。 これについてはどうすればよいでしょうか?
ここで 3 番目の引数の出番です。以下を実行します。
$ git rebase –onto 846e2fa bd9172c 730f163
これにより、次のようになります。
3 番目の引数は、新しい親コミットの HEAD
のみを指します。 この場合、730f163
があります。 これにより、コミットとその後のすべてのコミットが削除されます。
簡単に言えば、Git を使用すると、ブランチを特定のコミットにリベースできます。 git rebase -onto
コマンドは、リベース時に 3つの引数を受け入れます。
3 番目の引数が新しい親コミットを指示することを常に覚えておいてください。
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn