2017-11-08 10 views
1

リモートブランチを持つコミットツリーがあります。最近私はmasterブランチから別のリモートブランチorigin_fsa/masterに変更をプッシュするという要件があります。別の1つのリモートブランチをコミットツリーに接続する方法

新しいリモートorigin_fsaを追加し、そのリモートからリモートブランチをフェッチして、メインのコミットグラフから分離しました。 (私はTortoiseGitを使用して)このように:

enter image description here

私は、これは、新たにマージする(必要にコミットしない私の特定とリモート追加上のすべてを再作成したい、origin_fas/masterリモートブランチ上で、それらのコミットを維持する必要はありません、多分ちょうどハードrebase)。しかし、私はそれを行う方法を知らない。

origin_fsa/masterリモートブランチ(青色の線)を画像の現在のマスターにします。

+0

それはおそらく混乱を防ぐことができます - 両方の自分と他人とのgitの問題を通信しようとするために - のビットを明確にします用語。あなたが書いていることは、「ハードリベース」ではありません。 rebaseは、古いコミットから新しいコミットを作成することで、新しいコミットが別のコミットや異なる順序で同じ変更を適用したり、コミットしたりコミットしたりすることがあります。それは "難しい"または "柔らかい"ではない、ちょうどです。リセットは難しいかもしれませんし、あなたがやっていることになる地方の支店のために。リモートブランチの場合、強制的に任意のコミットに移動するようにします。 –

+0

"ハードリベース"を使用して、何もマージしないようにしましたが、以前のコミットに変更を書きます。これらの用語の説明をありがとう、@ MarkAdelsberger! – Roman

答えて

2

origin_fsaに位置masterブランチにローカルのmasterブランチをプッシュ強制するには:TortoiseGitを使用することにより

git push -f origin_fsa master:master 
+0

それはとても簡単で魔法のように働いていました!まことにありがとうございます! – Roman

+0

最初にマージ/リベースしないと、強制的にプッシュするとリモートの "origin_fsa"でコミットが失われる可能性があることに注意してください。 –

1

enter image description here

をあなたが見ることができるように、それはです:

push local branch "master"
to the remote branch "master"
on remote "origin_fsa"
with force (actually, it's "--force-with-lease" git option)

マージ/リベースを先に実行しないと、force pushがリモートの "origin_fsa"でコミットを失う可能性があることに注意してください。
enter image description here
enter image description here
(これらのオプションにマウスを移動すると、これらのヒントが表示されます)私は「

もと未知の変化オプションを変更知っているのヒントを参照してくださいdオプションを先に変更しての既知の変更を使用することをお勧めします。


forceオプションを使用していない場合は、このエラーが発生することがあります。

git.exe push --progress "origin_fsa" master:master 

To XXX/fsa.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to 'XXX/fsa.git' 
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Integrate the remote changes (e.g. 
hint: 'git pull ...') before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 
+0

詳細な説明ありがとうございます!しかし、変更を強制的に新しいリモートにプッシュしたときに私の変更をチェックしませんでした。実際に私はローカルのマスターとリモートを上書きしました。 事実私はリモートの履歴を保存し、ローカルマスタからファイルを取得した新しいコミットを作成したかったのです。幸いにも、リモートは重要ではなく、私は歴史を上書きしても大丈夫ですが、私がどのように私が説明したことをすることができるかを知りたいと思っていました。 – Roman

関連する問題