Git - 如何跟踪从本地分支创建的远程分支?

4

以下是情景描述。

我在my_new_branch分支中有一系列的提交记录。

我想将这个分支作为一个不同的名称推送到远程仓库并进行跟踪。

如果我执行以下操作:

git push origin my_new_branch:different_name

它可以很好地推送分支。

但是,如果我留在my_new_branch并进行另一次提交,如果我只做

git push

这里显示“一切都是最新的”。

此外,如果我查看.git/config文件,我可以看到它没有设置跟踪分支。

当然,我可以直接执行

git push origin my_new_branch:different_name 

再次提问,但是我该如何让它跟踪?

如果我执行

git checkout -b my_new_branch origin/different_name

它抱怨分支名称已经存在。

谢谢!


实际上看起来与这个问题相同 https://dev59.com/mnRB5IYBdhLWcg3wxZ1K - bruce
2个回答

2

正如你提到的,问题"如何使现有的git分支跟踪远程分支?"指出了为本地分支(自Git1.7.0起)设置上游分支(推送到哪个分支)的可能性。

git branch --set-upstream my_new_branch origin/different_name

此功能替代:

git config branch.my_new_branch.remote origin
git config branch.my_new_branch.merge refs/heads/different_name

默认情况下,git push使用特殊的refspec ':'。
特殊的refspec :(或+:以允许非快进更新)指示git推送“匹配”的分支:
对于本地存在的每个分支,如果远程已经存在同名分支,则更新远程分支。
如果没有找到显式的refspec(即既不在命令行上也不在相应remotes文件的任何Push行中),则这是默认操作模式。
因此,你可能会遇到 "git push"(没有参数)的问题。

嗨,跟进问题,如果我想将my_new_branch推送到两个不同的远程分支remote_branchA和remote_branchB,我需要使用这个命令吗? git push origin my_new_branch:remote_branchA git push origin my_new_branch:remote_branchB - TheOneTeam
1
@Kit:你的命令应该是有效的;在推送到多个分支时,你不能再依赖于一个分支的配置,而需要指定远程仓库和目标refspec,你已经这样做了。 - VonC

1
如果你记得在 push 的时候使用 -u,git 将会自动为你设置这个选项。

-u, --set-upstream

对于每一个已经更新或成功推送的分支,添加上游(跟踪)引用,供不带参数的 git-pull(1) 和其他命令使用。更多信息请参见 git-config(1) 中的 branch..merge。


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