12

リポジトリからにgitfetchを実行AしてもB、のマスターブランチは変更されBません-変更されるだけremotes/origin/masterで、それをgit status思い出させます。

しかし今、私は反対のことをしたいと思います-からの更新B、からへAのプッシュのようなもの。この理由は、この更新がsshを介して行われ、マシンがマシンに対して公開鍵認証を持っているためですが、その逆はありません。A:masterB:remotes/origin/masterAB

これどうやってするの?

4

1 に答える 1

10

git fetch A、から実行するとB、 の現在のすべてのブランチが保存Aされrefs/remotes/Aます。refspecsでほぼすべてのことを実行できるため、 a に対して同じことを実行できますが、git pushから実行しAて をターゲットにしBます。

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

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

まとめて、次のコマンドですべてのローカル ブランチを対応するリモート ブランチにプッシュします。

git push --force B refs/heads/*:refs/remotes/A/*
于 2013-03-04T11:04:15.983 に答える