29

熱心にコード モードに切り替え、いくつかのファイルを変更しましたが、最初に master から分岐することを怠りました。改造はやり直しがきかないほど広範ではありませんが、master の (これまでのところコミットされていない) 変更を新しいブランチに移行し、master を最後にそのままにしておく良い方法は何ですか?

4

3 に答える 3

41

まだどこにもコミットされていない場合 (git status変更されたものがたくさん表示されます。「git add」されていれば問題ありません):

$ git checkout -b newbranch

名前にもかかわらず、checkoutこの使用法 ( を使用-b) は何もチェックアウトしません。フラグには「-b新しいブランチを作成する」と表示されているため、git はブランチ名を作成し、現在のHEADコミットに対応させます。次にHEAD、新しいブランチを指し示し、そこで停止します。

したがって、次のコミットは onnewbranchであり、ファイルの変更を開始したときに行っていたコミットを親コミットとして持ちます。masterしたがって、あなたがにいて、これらのコミットがあると仮定します:

A - B - C       <-- HEAD=master

これcheckout -bにより、次のようになります。

A - B - C       <-- master, HEAD=newbranch

その後のコミットは新しいコミットを追加しますD:

A - B - C       <-- master
          \
            D   <-- newbranch
于 2013-10-26T22:16:15.333 に答える
5
git branch -M master my-branch

-mまたは-Mオプションを使用<oldbranch>すると、名前が に変更され<newbranch>ます。<oldbranch>に対応する reflog がある場合は、一致するように名前が変更<newbranch>され、ブランチの名前変更を記憶するために reflog エントリが作成されます。<newbranch>存在する場合は-M、名前の変更を強制するために使用する必要があります。

ソース

その後

git fetch origin refs/heads/master:refs/heads/master

また

git branch master my-branch  (or another ref)
于 2013-10-26T22:14:43.207 に答える
3
git stash
git stash branch <branchname>
于 2013-10-26T22:12:38.317 に答える