我知道如何创建跟踪远程分支的新分支,但如何使现有分支跟踪远程分支?
我知道我可以编辑.git/config文件,但似乎应该有一种更简单的方法。
我知道如何创建跟踪远程分支的新分支,但如何使现有分支跟踪远程分支?
我知道我可以编辑.git/config文件,但似乎应该有一种更简单的方法。
当前回答
您可以执行以下操作(假设您已在master上签出并希望推送到远程分支master):
如果您还没有“远程”,请设置它
git remote add origin ssh://...
现在配置master以了解跟踪:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
并推送:
git push origin master
其他回答
使用“--track”选项
在一次git拉动后:git checkout--track<远程分支名称>或:git获取和git签出<分支名称>
您可能会发现git_remote_branch工具很有用。它提供了创建、发布、删除、跟踪和重命名远程分支的简单命令。一个很好的特性是,您可以要求grb命令解释它将执行哪些git命令。
grb explain create my_branch github
# git_remote_branch version 0.3.0
# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch
这不是对这个问题的直接回答,但我想在这里为任何在尝试配置上游分支时可能遇到与我相同问题的人留下一条注释。
小心push.default。
对于较旧的git版本,默认值为匹配,如果您有以下情况,则会导致非常不理想的行为:
本地分支机构“主”跟踪到原点/主
远程分支“上游”跟踪到上游/主分支
如果您在“上游”分支上尝试“git push”,则使用push.default匹配,git将自动尝试将本地分支“master”合并为“upstream/master”,从而导致大量混乱。
这会产生更理智的行为:
git-config—全局push.default上游
编辑.git/config可能是最简单、最快的方法。无论如何,这就是处理远程分支的Git命令所做的。
如果你不想手动处理这个文件(这并不难),你可以一直使用git-config来完成……但同样,这只会编辑.git/config文件。
当然,在使用git签出时,有一些方法可以自动跟踪远程分支(例如,通过传递--track标志),但这些命令可以处理新的分支,而不是现有的分支。
这也行
git branch --set-upstream-to=/< remote>/< branch> < localbranch>