“git fetch”的相反操作是什么?

12
如果我从仓库 AB 进行 git fetch,那么 B 中的主分支不会更改 - 只会更改 remotes/origin/master,并且 git status 会提醒我。
但现在我想做相反的操作 - 从 A:master 更新到 B:remotes/origin/master,类似于从 A 推送。原因是此更新通过 ssh 进行,A 机器具有对 B 机器的公钥身份验证 - 但反之则不然。
我该怎么做呢?

1个回答

10
B上运行git fetch A将会把A的所有当前分支存储到refs/remotes/A中。由于可以使用refspecs完成几乎所有操作,因此也可以从A运行并针对B进行git push
Refspec有两个部分,由分号分隔。第一部分是选择要推送的内容。在这里,您需要所有当前分支,因此为refs/heads/*
第二部分是将它们存储在远程的位置; 在这里,您需要将它们存储在remotes/A/*下,因此为refs/remotes/A/*
将其组合起来,使用此命令将所有本地分支推送到相应的远程分支:
git push --force B refs/heads/*:refs/remotes/A/*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接