2017-01-18 5 views
0

私はいくつかの変更を加えたブランチを持っています。新しいブランチのためにその内容をコピーしたいと思います。それは本質的に同じ内容、おそらく少し少ない新しい支店です。だから、これを保持している新しいブランチまたは別のブランチのために汚れたブランチをコピーすることは可能ですか?新しいブランチのために汚れたブランチをコピーするには

+0

@DurgpalSingh:

git add -A git stash --keep-index git checkout -b new_branch 

そして、あなたは元のブランチに行くと汚いworktreeを復元したい:これはおそらく、好ましい解決策です。私の質問は地元の支店についてです。 –

+0

Alderathは正しいですが、「汚れた枝」などはありません。 – torek

答えて

2

私はあなたがどのようにgitの作品について何かを誤解していると思います。各ブランチは、特定のコミットへのポインタにすぎません。

汚れた枝などはありません。おそらく、ブランチをチェックアウトしていて、汚い作業ツリーがある場合を考えているでしょう。 (これは、まだコミットされていない作業ツリーに変更を加えたことを意味します)。しかし、支店は汚れていません。作業ツリーは汚れています。

に保存することができます。ブランチはコミットすることです。あなたはブランチをプッシュしていない場合は、ちょうどいいかもしれないコミットの一時を作成:

git checkout original_branch 
git reset HEAD^ 

git add -A 
git commit -m "tmp commit" 
git checkout -b new_branch 
git reset HEAD^  #this will reset the branch pointer to the previous commit, 
        #but keep the work-tree 

をそして、あなたは、元のブランチに戻って、汚いworktreeを復元したいとき

また、変更を隠しに保存することもできます。それが複製されていない、

git checkout original_branch 
git stash pop 
+1

なぜ 'git reset HEAD'ではなく' git reset HEAD^'ですか? – Adder

+2

'git reset HEAD'と' git reset HEAD^'は異なることを意味します。 'HEAD'は、現在のブランチでの最新のコミットです。 '^'は "前のコミット"を意味します。ブランチに対して一時的なコミットを行ったので、最新のコミットの前にコミットにリセットしたい(私たちが一時的に使用した一時的なコミットを取り除き、変更を保存するだけです)。 一般的には、第2の方法のほうが好まれます。このユースケースは基本的に隠されているものです。最初の例を追加して、元のブランチに**変更を保存するために必要なことを示しました**。 – Alderath

2

git checkout -b <new-branch>

+0

Arpit、このように私の汚れた枝は守られていますか? –

+0

新しいブランチが作成されたら、ブランチを削除する 'git branch -D <ダーティブランチ> ' – Arpit

+0

Arpit、nooo、私はそれを保存したい; –

関連する問題