674

Gitで次のことを行うにはどうすればよいですか?

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

4

6 に答える 6

950

あなたのファイルはまだコミットされていないので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

上記は、 rbento回答のより明示的なバージョンです。

git stash
git stash branch branch2

それは使用しています:

git stash branch <branchname> [<stash>]

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

それが成功し<stash>、フォームの参照であるstash@{<revision>}場合は、<stash>.

これは、実行したブランチgit stash pushが変更さgit stash applyれ、競合によって失敗する場合に役立ちます。
stash エントリは、git stash実行時に HEAD であったコミットの上に適用されるため、競合することなく、元の stashed 状態を復元します。


benjohn のコメント( mangit stashページを参照):

現在追跡されていない (新しく追加された) ファイルも隠しておくには、引数 を追加します-u

git stash -u
于 2009-02-17T14:16:07.730 に答える
89

隠し場所、一時的なコミット、リベースはすべてやり過ぎかもしれません。変更したファイルをまだインデックスに追加していない場合は、他のブランチをチェックアウトできる可能性があります。

git checkout branch2

これは、編集しているファイルがbranch1とbranch2で異なっていない限り機能します。作業中の変更を保持したまま、branch2に残ります。それらが異なる場合は、ローカルの変更を、-mチェックアウトのオプションを使用してブランチを切り替えることによって導入された変更とマージすることを指定できます。

git checkout -m branch2

インデックスに変更を追加した場合は、最初にリセットしてこれらの変更を元に戻す必要があります。(これにより、作業コピーが保持され、段階的な変更が削除されるだけです。)

git reset
于 2009-02-17T19:53:44.203 に答える
16

受け入れられた答えの短い代替案は次のとおりです。

変更を一時的にスタッシュに移動します。

  1. git stash

新しいブランチを作成して切り替え、スタッシュを 1 つのステップでそこにポップします。

  1. git stash branch new_branch_name

次に、この新しいブランチへの変更addのみです。commit

于 2014-08-23T05:46:00.797 に答える
1

これらは私が従う手順です:

  • git クローン {リンク}
  • cd {リポジトリ フォルダ}

ステータスと使用しているブランチを確認できます。

  • git ステータス
  • gitブランチ
  • git ブランチ -a

注: ここで、新しいブランチに移動する前にローカル リポジトリに変更を加えた場合でも、次の手順は引き続き機能します。

「git branch」に master が表示されていて、作成して別のブランチに移動したい場合:

  • git checkout -b {ブランチ名}

「git branch」を使用してブランチを再度確認すると、新しいブランチにいることが示されます。

次に、追加、コミット、およびプッシュします。

  • git add .
  • git commit -m "新しいブランチを追加"
  • git push origin {ブランチ名}

上記の手順は、新しいローカル ブランチに移動する前に変更を行った場合と、新しいブランチに移動した後に変更を行った場合の両方の状況で機能します。同様の状況に陥った人々の助けになれば幸いです。

于 2021-10-01T10:38:26.113 に答える