既存のコミットされていない変更を 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
コマンドを使用できます。
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