2012-04-02 14 views
0

私は現在、複数の変更/バグに取り組んでおり、個々のローカルブランチを使って個別に作業することができます。しかし、私が例えばbranch_aなどで作業しているときに、新しいホットプロジェクトで作業を開始する必要があり、branch_bを作成すると、branch_aから変更があります。ここで
他のローカルブランチのコミットされていない変更を取得せずにローカルブランチを作成するにはどうすればよいですか?

は、ワークフローは次のとおりです。開始するために必要な

  1. 作成し、チェックアウトローカルbranch_adev
  2. メイドローカルbranch_aへの変更から(ただし、ステージングgit addを介して、またはローカルにコミット)
  3. 新しいホットバグでdevブランチに切り替え、作成してチェックアウトしましたbranch_b
  4. git statusを実行してくださいそして、私はbranch_aで行った変更を持っていない私はbranch_a私は新しいブランチを作成するにはどうすればよい

で行った変更を参照してください?私は別のブランチをチェックアウトするとき

はまた、私は

$ git checkout branch_b 
M app/controllers/stuff.rb 
M app/views/stuff/index.html.erb 
Switched to branch 'branch_b' 

を得るMは何を表しているのでしょうか?

おかげ

答えて

2

Mは変更されたことを意味します。まず、現在のブランチに変更をコミットするか、またはそれらを隠す必要があります。

あなたがそれらを隠したい:

git add . 
# temporary stash your changes 
git stash 
# create a new branch 
git checkout -b branch_b 
# do your changes 
git commit -am 'fixed but in branch_b' 
# go back to branch a 
git checkout branch_a 
# get back your stash 
git stash pop 

変更をコミットすることを選択した:

git add . 
git commit -am 'changes in branch_a' 
# creating and checkout new branch 
git checkout -b branch_b 
# fix your bug 
git add . 
git commit -am 'just fixed a bug' 
1

Mが変更されます。あなたはそのファイルを修正しました。それはステージングされていません。変更を追加して、進行中の作業としてbranch_aにコミットしてから新しいブランチにスワップするか、git stashを使用してスワップする前に変更を隠すことができます。

0

変更されていない変更をどこかに保存する必要があります。つまり、あなたがそれらを取り除きたいのでなければ、それをやりたいとは思わないでしょう。

ここでの最適な解決方法は、ほぼ確実にgit stashです。これにより、コミットされていない変更を「隠す」ことができ、新しい作業コピーで作業することができます。その後、隠しアプリケーションを後で再適用することができます。

0

Mは、ファイルが変更されたことを表しています。あなたが望むことをするために、私が通常使う2つのアプローチがあります。

1つのアプローチは、現在のブランチを離れる前にgit stashと呼んでおり、すべての変更は隠しと呼ばれる並べ替えの2次インデックスに入れられます。元のブランチに戻ったら、git stash popに電話して、変更を隠し場所に戻してください。

私も、私は変更の私の新しいセットはかなり長命になる予想される場合は、単に「WIP」は私が後で戻すどのコミットすることですかなり頻繁に使用する別のアプローチ:

(oldbranch)$ git add -A . && git commit -m"wip" 
(oldbranch)$ git checkout master && git checkout -b newbranch 
# work on the new branch.... 
(newbranch)$ git checkout oldbranch 
(newbranch)$ git reset HEAD^ 

git reset HEAD^ブランチの現在の頭の前にコミットに作業ディレクトリを戻し、その "wip"コミットに含まれていたすべての変更を作業ディレクトリに戻し、効果的に元の場所に戻します。

関連する問題