2013-03-04 6 views
10

AからBにgit fetchを実行した場合、Bのマスターブランチは変更されません。変更はremotes/origin/masterとなり、git statusはそれを思い出します。「git fetch」の反対は何でしょうか?

しかし、今、私は反対のことをやってみたい - 、AからB:remotes/origin/masterA:masterからプッシュのようなものをBを更新します。これは、このアップデートがsshを介して行われ、AマシンがBマシンに公開鍵認証を持っているが、その逆ではないことである。

どうすればいいですか?

+0

非常関連[「Gitのプッシュ」リモートから「gitのフェッチ」と同じことをやっ](のhttp:/ /stackoverflow.com/q/4239064/11343) – CharlesB

答えて

9

git fetch Aから実行すると、Aの現在のすべてのブランチはrefs/remotes/Aに格納されます。 refspecsでほとんどすべてを行うことができるので、git pushの場合は同じことを実行できますが、AからBを実行すると実行できます。

refspecには、セミコロンで区切られた2つの部分があります。最初の部分では、プッシュしたいものを選択します。すべての現在のブランチが必要なので、これはrefs/heads/*です。

2番目の部分は、リモコンに保存する部分です。ここではremotes/A/*の下に保存したいので、これはrefs/remotes/A/*です。

このコマンドでリモートブランチを対応するすべてのローカル枝をプッシュする、それを一緒に入れてください:

git push --force B refs/heads/*:refs/remotes/A/* 
関連する問題