Git でコミットを別のブランチに移動する

Abdul Jabbar 2023年1月30日
  1. Git での移動にコミットする数を計算する
  2. コミットを Git の新しいブランチに移動する
  3. Git で既存のブランチにコミットを移動する
Git でコミットを別のブランチに移動する

Git は、現代のソフトウェアの世界で非常に便利で強力なツールです。多くの種類のファイルとコードは、Git での分岐とコミットを介して保存できます。分岐は、使用しているバージョン管理システムによって異なる概念です。多くの開発者は、その効率性から、これが最も好ましいバージョン管理システムであると考えています。

ほとんどの場合、この状況に直面するのは、いくつかの作業を完了して特定のブランチにコミットした後、間違ったブランチに誤ってコミットし、別のブランチで再度コミットしたい場合です。ここで Git が救助に来て、コミットを他の既存のブランチまたは新しいブランチに移動できるようにします。

このガイドでは、コミットを別のブランチに移動する方法の基本的な理解が得られます。これは、新しいブランチでも既存のブランチでもかまいません。さらに、git branch コマンドを使用して新しいブランチを作成し、git reset コマンドを使用してコミットを移動し、gitmerge コマンドを使用してそれらの変更をメインブランチにマージする方法について説明します。

Git での移動にコミットする数を計算する

プロセス全体を開始する前に、状況を判断する必要があります。変更するブランチをチェックアウトしたと仮定します。この目的のために歴史を見る必要があります。

次のコマンドを使用して、移動するコミットの数を計算します。

git log

実行後、HEADorigin/HEAD の先頭にある 2つのコミットであり、これらは別のブランチに移動するために必要な 2つの望ましいコミットであることがわかります。以下は残りのステップであり、これらのコミットを新しいブランチまたは既存のブランチに移動する方法について説明します。

コミットを Git の新しいブランチに移動する

以下の手順は、最新のコミットを新しいブランチに移動する方法を示しています。

  • 新しいブランチを作成する
    git branch feature/new branch
    

    このコマンドは、master(current) ブランチのすべてのコミットを含む新しいブランチを作成します。

  • 現在のブランチを 2つのコミットに戻します
    git reset --keep HEAD~2
    
  • 新しいブランチをチェックしてください
    git checkout feature/new branch
    

これらを実行することにより、最新の 2つのコミットが master(現在のブランチ)から削除され、feature/new ブランチと呼ばれる新しいブランチに追加されました。

Git で既存のブランチにコミットを移動する

以下の手順は、最新のコミットを既存のブランチに移動する方法を示しています。機能ブランチで作業している場合は便利ですが、誤って間違ったブランチでコミットを開始しました。削除したいコミットを含む現在のブランチが master であると仮定しましょう。

  • 既存のブランチをチェックアウト
    git checkout feature/existing branch
    

    コマンド git checkout は、作業ディレクトリでの作業だけに限定されていません。また、HEAD 参照ポインタをブランチ上の参照ポイントに移動するために使用することもできます。

  • マスターブランチをマージします
    git merge master
    

    git merge コマンドを使用してブランチを現在のブランチにマージすることもできますが、これは、現在のブランチがマージされるブランチにすでにマージされている場合に限ります。

  • マスターブランチをチェックしてください
    git checkout master
    

    コマンド checkout master は、コードの最新バージョンをプルダウンし、master と呼ばれる新しいブランチを作成します。

  • 現在のブランチを 2つのコミットに戻します。
    git reset --keep HEAD~2
    

    オプション --keep は、コミットと HEAD の間で異なる作業ツリー内のインデックスエントリをリセットし、ファイルを更新します。コミット間でファイルが異なり、HEAD にローカル変更がある場合、リセットは終了します。したがって、最新の 2つのコミットが master から削除され、既存のブランチに追加されました。

著者: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

関連記事 - Git Commit

関連記事 - Git Branch