2016-04-27 12 views
1

私は支店と支店があります。私はfile1、file2でいくつかの変更を行っています。しかし、また、私は、fileA、fileBのように、明らかに修正されたものについてリファクタリングを行いました。いくつかのファイルのコミットされていない変更を新しいブランチに入れる方法を教えてください。

<my_feature>でこれらの変更を隔離する別のブランチを作成して、<my_updates>と言って、fileA、fileBだけをコミットするようにしたいとします。

現在、私はFILE1、FILE2、FILEAとFILEBにコミットの上演ではない変更を持っています。

私は約git cherry-pick and git applyを読んでてきたが、それはすでにコミットされているものが含まれます。

処理するためのより良い方法がある場合は今、これらの変更のどれもがコミットされていないことを、私はこれとチェリー・ピッキングをコミットする必要がある場合は知っているか、しないでください。

は私がやってみたかった:絵がクリアされていることを確認する

、のは、それから、いくつかのビジュアルを作ってみよう

master ------------------ 
    \--- my_feature ----/ 
      file1 
      file2 

をしかし、今、私は

master ------------------ 
     my_feature ----/ 
      file1 
      file2 
      fileA 
      fileB 

を持っていると私がしたいです<my_feature>を進めて行く前に、この(FILEA、FILEBの変化)をマージする:

master ------------------ 
    \--- my_updates ----/ 
      fileA 
      fileB 

<my_feature>には、file1、file2の変更が含まれているだけです。

+2

がコミット 'FILE1 'と' file2'をあなたのブランチに置き、 'master'をチェックアウトしてください。コミットされていない変更は引き継がれます。 – poke

+1

ポケの方法はここで一番簡単です。 'git stash'を使うと動作しますが、コミットすることで動作します。あなたは自分でコミットしたり、必要に応じて物事をコピーしたり、オリジナルのコミットを "元に戻す"ことができます。これは基本的に 'git stash'を使ったときと同じようにgit内部での作業量が同じになります(コミットを行うため)。これはあなたが個人的に快適であることの問題です。 – torek

答えて

2

あなたはgit stashできた、新しいブランチに移動し、その後git stash pop。その後、さらなる作業や結果のコミットを行うことができます。

また、ファイル(git diff > changes.patch)またはクリップボード(OS X用git diff | pbcopyまたはgit diff | xclip -selection clipboard Ubuntuの中)にgit diffの出力を向けることによって、パッチを作成することができます。その後、git applyのパッチを他のブランチに適用することができます。レコードの

+0

多くの感謝! 'git diff fileA fileB>/tmp/changes.patch'を実行し、次に' git checkout master; git checkout -b my_feature; git patch/tmp/changes.patch'が作成しました。 – fedorqui

0

、これは私はそれを動作させるために使用されるコマンドの完全なセットです。

ブランチ<my_feature>でいる間、パッチで差分を格納します。

git diff fileA fileB > /tmp/changes.patch 

変更を隠し後でそれらを再利用します

git stash -u 

は、そのパッチでmasterから新しいブランチを作成します。

git checkout master 
git checkout -b my_updates 
git patch /tmp/changes.patch 
git add fileA fileB 
git commit -m "Updated fileA, fileB because blabla" 
git push 

ブランチ<my_feature>に戻り、隠さ変化回復:彼らはすでに配置されていることから、

git checkout my_feature 
git stash pop 

がFILEAとFILEBの変化を取り除くを:

git checkout fileA fileB 
関連する問題