2009-09-09 19 views
98

私は自分のマスターブランチでマイナーなバグフィックスと思っていた作業を開始しました。しかし、それは、私が最初に開発を行うために別のブランチを作ってほしかったところまで、制御不能になってしまった。現在のブランチですべての変更を行い、Gitの新しいブランチに移動します

だから、今、私がやりたいものです:

  1. は「エッジ」(と言う)と呼ばれる新しいブランチを作成し
  2. 移動端にマスター上のすべての変更/人跡未踏のファイル(その結果、マスターは、私はバグ修正)
  3. は、端に私の仕事を終了し、私はこれをどのように行うことができます

マスターに戻すマージを始めたときから変更されていませんか?

答えて

93

まだ何もコミットしていない場合は、すでに適切な位置にあります。

  1. 新しいブランチを作成します。git checkout -b edge
  2. あなたのファイルが変更されていません。ちょうどgit add何がいつものように必要とコミットする。
  3. edgeにコミットしたら、git checkoutgit merge edgemasterに戻ってください。
+0

はまだ何もコミットしていないていたが、最初の行は歓迎光景だったように...あー、それは実際には非常に痛みのない:-) – Ryan

86

あなたはが既にあなたは、「エッジ」努力として終わった何のためにマスターには、いくつかのコミットを行うことができ始めている場合は、JBの答えに追加するには:

git stash 
git checkout -b edge master 
git branch -f master SHA1_before_your_commits 
git stash apply 
+0

たスタッシュラッパーは、厳密には必要ではありませんコミットされていない作業の変更については正しいでしょうか? – HaveAGuess

+4

@HaveAGuess right。 「すべての変更を行う」ことによって、私はまだ未だに追加されていない変更も含めました。それゆえ隠れている。 – VonC

+1

ありがとう(投票済み) – HaveAGuess

13

をあなたの場合すでに存在しているブランチにマスターから作業を移そうとしていますが、マスターの後ろにあるので、他のブランチに切り替えることはできません。この場合は、この操作を行います。

git stash 
git checkout oldBranch 
git merge master 
git checkout master 
git stash apply 
git checkout oldBranch 
関連する問題