既存のコミットされていない変更を Git の新しいブランチに移動する

John Wachira 2024年2月15日
既存のコミットされていない変更を Git の新しいブランチに移動する

この記事では、コミットされていない変更を新しいブランチに移動するプロセスについて説明します。

master ブランチで作業していて、新しいブランチを作成し、コミットされていない変更を移動する必要があることに気付くかもしれません。 同じような状況にある場合は、固執してください。

既存のコミットされていない変更を新しいブランチに移動する

この架空のシナリオを考えてみましょう。あなたは master ブランチで作業していて、master にコミットする前にコードをテストする必要があることに気付きました。

新しいブランチを作成し、コミットされていない変更を移動して、master ブランチをリセットする必要があります。 これについてどう思いますか?

これには 2つの方法があります。

  1. git checkout コマンドまたは git switch コマンドを使用します。
  2. git stash コマンドを使用します。

git checkout および git switch コマンド

Git を長年使用している場合は、git checkout コマンドにいくつかの用途があることをご存知でしょう。 git checkout コマンドを使用して、新しいブランチを作成して切り替えることができることをご存知でしょう。

master ブランチにいると仮定すると、作業スペースは次のようになります。

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to ...)
  (use "git checkout -- <file>..." to ...)
        modified:   LICENSE.md
        modified:   README.md
Untracked files:
  (use "git add <file>..." to include...)
        scripts.txt
no changes added to commit (use..)

これらの変更を新しいブランチに移動するにはどうすればよいですか?

変更を新しいブランチ、たとえば新しい development ブランチに移動するには、次を実行します。

$ git checkout -b development

または、以下に示すように、git switch コマンドを使用することもできます。

$ git switch -c development

どちらのコマンドも development ブランチを作成し、コミットされていない変更を新しいブランチに移動します。 以下は、development ブランチの作業ディレクトリです。

開発ブランチの作業スペース

次に、ファイルをインデックスに追加してコミットできます。

master ブランチに戻って git status コマンドを実行すると、作業ツリーがクリーンであることがわかります。

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

git stash コマンド

git stash コマンドを使用して、変更を新しいブランチに移動できます。 これにより、コミットされていない変更がパッチ ファイルに保存されます。

$ git stash

その後、コミットされていない変更を保存する新しいブランチを作成できます。 以下に示すように、git checkout コマンドを使用して、新しいブランチを作成して切り替えます。

$ git checkout -b <new branch>

スタッシュをポップして、コミットされていない変更を新しく作成されたブランチの作業スペースに適用します。 git stash pop または git stash apply コマンドを使用します。

$ git stash pop

好みに合わせて手動で解決する必要があるマージの競合が発生する場合があります。 変更に満足したら、コミットに進みます。

簡単に言えば、コミットされていない変更をあるブランチから別のブランチに移動するには、2つのオプションがあります。 git stash コマンドまたは従来の git switch および git checkout コマンドを使用できます。

著者: John Wachira
John Wachira avatar John Wachira avatar

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

関連記事 - Git Stash