1. ホーム
  2. git

[解決済み] ローカルの未コミットの変更を別のGitブランチにマージするには?

2022-03-15 09:34:59

質問

Gitで以下のことを行うにはどうしたらよいでしょうか。

私の現在のブランチはbranch1であり、私はいくつかのローカルな変更を加えました。しかし、本当はこれらの変更をブランチ2に適用するつもりだったことに今気づきました。ブランチ1でコミットせずに、ブランチ2のローカルな変更になるようにこれらの変更を適用/マージする方法はありますか?

解決方法は?

にはまだコミットされていませんので branch1 :

git stash
git checkout branch2
git stash pop

または

git stash
git checkout branch2
git stash list       # to check the various stash made in different branch
git stash apply x    # to select the right one

上記は、より長い、より明示的な 弁当 's 回答 :

git stash
git stash branch branch2

使っている。

git stash branch <branchname> [<stash>]

  • という名前の新しいブランチを作成し、チェックアウトします。 <branchname> が実行されたコミットから開始します。 <stash> が最初に作成されました。
  • に記録された変更を適用します。 <stash> を新しい作業ツリーとインデックスに追加します。

もしそれが成功し <stash> という形式の参照です。 stash@{<revision>} を削除し、その後に <stash> .

を実行したブランチが、そのブランチにある場合、これは便利です。 git stash push が十分に変更され git stash apply はコンフリクトのため失敗します。
スタッシュのエントリは、その時点で HEAD であったコミットの上に適用されるので git stash を実行すると、元々保存されていた状態をコンフリクトなしに復元します。


コメント通り によって ベンジョン (参照 git stash マンページ ):

現在追跡されていない(新しく追加された)ファイルも格納する場合は、引数に -u というように。

git stash -u