2017-09-18 4 views
0

からチェックアウト、私のマスターA、私のステージングB、そして私の変更、C.githubのは - 私は2つの支店を持っている間違った枝

は、私は、しかし、私は今でマージする必要があり、BからCに分岐して、さまざまなコミットを作っBブランチ上のすべての変更は、Bブランチ全体でマージするのではなく、マスターに変更されます。

これを行う簡単な方法はありますか?私はスタックのオーバーフローをチェックして、明らかにgit checkoutは、基本ファイルが同一である場合にのみ動作します。この場合、それらは一致しません。

+0

から、次に'。 git rebase A'です。 – Arount

答えて

0

masterから新しいブランチを作成できます。次にチェリーピックCのコミットの範囲。

最新のコミットハッシュCブランチをgit log出力からコピーします。 masterブランチとチェリーピックから新しいブランチ(たとえば、newCコミットの範囲に

$ git checkout C 
$ git log --oneline --decorate --all --graph 

チェックアウト。

$ git checkout master 
$ git pull origin master 
$ git checkout -b newC 

$ git cherry-pick <oldest-commit>^..<newest-commit> 

注:最古のコミット= Pであれば、最新コミット= Z(P < Z)、その後チェリーピックコマンドはgit cherry-pick P^..Z

0

「あなたが得るためにチェリーピックコマンドを使用する必要があります

個々のコミットに変更がない場合は、ここに示す方法を使用してコミットを個々のコミットに分割します。大まかに言えば、git rebase -iを使用してオリジナルのコミットを編集し、git reset HEAD ^を選択的に元に戻すハングしてから、gitをコミットしてその履歴を新しいコミットとしてコミットします。

Red Hat Magazineには、git add --patchまたはgit add --interactiveを使用してさまざまな変更を個々のファイル(そのページで「分割」を検索)。

は、あなたが今チェリーピックだけのものは、あなたが望むことができ、変更内容を分割した「 - 。直接引用することはでき `A``へrebase` 'C' `GitのチェックアウトC` How do you merge selective files with git-merge?

関連する問題