HOWTO · Git
既存のコミットされていない変更を Git の新しいブランチに移動する
コミットされていない変更を Git の新しいブランチに移動できます。
この記事では、コミットされていない変更を新しいブランチに移動するプロセスについて説明します。
master ブランチで作業していて、新しいブランチを作成し、コミットされていない変更を移動する必要があることに気付くかもしれません。 同じような状況にある場合は、固執してください。
既存のコミットされていない変更を新しいブランチに移動する
この架空のシナリオを考えてみましょう。あなたは master ブランチで作業していて、master にコミットする前にコードをテストする必要があることに気付きました。
新しいブランチを作成し、コミットされていない変更を移動して、master ブランチをリセットする必要があります。 これについてどう思いますか?
これには 2つの方法があります。
git checkoutコマンドまたはgit switchコマンドを使用します。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 コマンドを使用できます。