2017-03-17 13 views
1

私は現在3つの支店、masterdevelopfeature/core-md-topbarを持ってGITでプロジェクトを持っています。古いコミットをgitの別のブランチに移動するには?

私はfeature/core-md-topbarブランチで働いていて、feature/core-md-topbarブランチに誤って修正したdevelopmentブランチに存在するバグを発見しました。

今、私は何がまだリモートにプッシュしていないが、私は私の問題を修正する修正プログラムをdevelop枝の一部になりたいです。

だから、これは私の現在のコミットです:

enter image description here

だから、私は第2のハッシュ8f928d0にコミット直後に配置されるようにFIXとハッシュ64376b2で始まるコミットします。

もちろん、私は仕事を失うべきではありません。

この問題を解決するためのgittish方法は何ですか?

+0

歴史や8f92と8b96の間に新しいヘッド/ブランチがありますか? –

+1

リモートに '開発 'ブランチがありますか?はいの場合は、どのコミットが指し示していますか? – Uzbekjon

+0

**これの何も** **がプッシュされている場合は、対話的なリベースを使用してチェンジセットを並べ替えることができます。 –

答えて

0

修正をチェリーピックはdevelopmentcore-md-topbarからコミット:

git checkout development 
git cherry-pick 64376b2 

core-md-topbarからコミット修正削除:

あなたは、対話型リベースをやって試すことができます:

git rebase -i HEAD~8 

ウィンドウを次のようなものが現れるはずです。コミットは、のうち、最も古いものがからであり、最新のものがであることに注意してください。

pick 2eb670c comment 
pick 8f928d0 comment 
pick 8b96886 comment 
pick 8fa512e comment 
pick 995396f comment 
pick dd4ab71 comment 
pick 64376b2 comment 
pick 704c5da comment 

これであなたを残して、64376b2をコミット修正含む行を削除します。

pick 2eb670c comment 
pick 8f928d0 comment 
pick 8b96886 comment 
pick 8fa512e comment 
pick 995396f comment 
pick dd4ab71 comment 
pick 704c5da comment 

さて、実際のリベースを開始しますウィンドウを保存して閉じます。各コミットが8つ前のコミットから再適用されると、マージ競合が発生する可能性があります。安全

最初チェリーピックは、清潔で安全です。しかし、core-md-topbarブランチが公開されている場合には、対話型のrebaseが潜在的なリスクを負っています修正コミット以降に公開しました。すでに公開している場合は、にはるかに安全ですあなたはcore-md-topbarブランチにしたくないと仮定すると、コミット修正を元に戻す:

git checkout core-md-topbar 
git revert 64376b2 

これは新しいがHEADにコミットするためにGitリポジトリを指示core-md-topbarの場合、フィックスコミットを効果的に取り消します。これを公開しても、他の人が使っている公共支店には問題は生じません。

+0

複数のブランチにまたがっている場合、リベースは安全ですか? – Complexity

+0

お待ちください...私はあなたの要件を理解していません。あなたは 'core-md-topbar'で修正をコミットしましたが、' development'でその修正を望みますが、 'core-md-topbar'を再構築したいのですか?これは意味をなさない。説明してください。 –

+0

コミットは 'core-md-topbar'から削除し、' development'に適用する必要があります。 – Complexity

関連する問題