2016-09-29 8 views
0

私は次のような状況があります:どのように私はSourceTreeを使用してwarning-fixes上に(削除ProxyFinderを...)ステージングから最後のコミットrebaseできSourceTreeを使用して、指定したコミットを別のブランチにリベースする方法はありますか?

SourceTree Git log output

を?

一つの方法は、warning-fixesstagingをマージしてからコミット以前にstagingをリセットすることであろうが、それは厄介な回避策のように聞こえます。

+0

警告固定にステージングをマージするのも問題ありません。ステージングには何もしません。この場合、警告修正をステージングにリセットすることもできます。 – ElpieKay

+0

しかし、それはrebaseで行うことができますか? - コミットとそのすべての子を別のブランチに移動して、変更が "合併可能"ならば – Antoniossss

答えて

0

それを行うための最善の方法は、@ElpieKay's commentで述べたようになり、あなたの質問の最後に:コミットwarning-fixesstagingをマージして、以前にstagingをリセットします。

、コマンドラインからそれを行うために実行します。SourceTreeで

git checkout warning-fixes 
git merge staging 
git checkout staging 
git reset --hard HEAD^ 

を:

  1. それをチェックアウトするwarning-fixesをダブルクリックします。
  2. stagingを右クリックします。
  3. Merge staging into current branchをクリックします。
  4. stagingをダブルクリックして確認してください。
  5. 前回のコミットを右クリックします(origin/stagingは現在)。
  6. Reset current branch to this commitをクリックします。

rebaseを使用しない理由は、コミットを移動するだけでなく、ブランチポインタも移動するためです。この場合、stagingwarning-fixesにrebaseしようとすると、stagingの先端のコミットはすでにwarning-fixesの先端と同じ親を持つので、何の効果もありません。

唯一の唯一の代替方法はcherry-pickを使用することですが、これは(デフォルトでは)新しいコミッター日付でコミットを作成します。 (移動するコミットが複数ある場合は苦になります)

+0

'チェリーピック'に関しては、重複したコミットに副作用があります。 – Antoniossss

+0

@Antoniossss実際にはないでしょう:あなたが 'cherry-pick'をコミットすることは' warn-fixes'の終わりと同じ親を持っているので、Gitはコミットを再利用し、 'warning-fixes'をコミットします。 –

+0

私の場合、チェリーを選んだのと同じ内容で余分なコミットを作成します...それはなぜですか? – Antoniossss

関連する問題