2013-10-26 10 views
11

私は熱心にコードモードに陥っていくつかのファイルを修正したが、マスターから最初に分岐しなかった。モッズはそれほど広範囲ではないので、私はそれらをやり直すことはできませんが、私の(今のところコミットされていない)マスターの変更を新しいブランチに移行し、マスターを最後まで残しておく良い方法は何ですか?gitで分岐するのを忘れた、マスターからの変更を移動する必要がある

+1

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

以降コミットは新しいDをコミットを追加します** Dude。**](https://www.google.com/search?q=Forgot+to+branch+in+git%2C+need+to+move+changes+from+master)。グーグルがグーグルで優秀な答えを出すので、この質問は話題にはならないようです。 – jthill

+0

@ krmlr--ありがとう – larryq

答えて

19

まだどこにもコミットしていない場合(git statusが修正原料の束を示し、それは "gitの追加" だ場合、それはOKです - エドも):

$ git checkout -b newbranch 

checkoutという名前がありますが、この使用法(-b)は何もチェックしません。 -bフラグは "新しいブランチを作成する"と言うので、gitはブランチ名を作成し、それを現在のHEADに対応させます。その後、HEADは新しいブランチを指し、そこで停止します。

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

A - B - C  <-- HEAD=master 

checkout -bは、この読み取りを行います[

A - B - C  <-- master 
      \ 
      D <-- newbranch 
2
git stash 
git stash branch <branchname> 
+0

これでうまくいくが、 'git checkout -b 'はもっと簡単で(少し早く、変更を元に戻してから再度適用する必要はない)。 – torek

2
git branch -M master my-branch 

、その後

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

または

git branch master my-branch (or another ref) 
+0

これは、新しいブランチmy-branchにあることをコミットしたものを変更する良い方法です。 – torek

関連する問題