我知道如何创建跟踪远程分支的新分支,但如何使现有分支跟踪远程分支?
我知道我可以编辑.git/config文件,但似乎应该有一种更简单的方法。
我知道如何创建跟踪远程分支的新分支,但如何使现有分支跟踪远程分支?
我知道我可以编辑.git/config文件,但似乎应该有一种更简单的方法。
当前回答
编辑.git/config可能是最简单、最快的方法。无论如何,这就是处理远程分支的Git命令所做的。
如果你不想手动处理这个文件(这并不难),你可以一直使用git-config来完成……但同样,这只会编辑.git/config文件。
当然,在使用git签出时,有一些方法可以自动跟踪远程分支(例如,通过传递--track标志),但这些命令可以处理新的分支,而不是现有的分支。
其他回答
在这里,使用github和git版本2.1.4,只需执行以下操作:
$ git clone git@github.com:user/repo.git
遥控器由itelsef提供,即使没有本地链接:
$ git remote show origin
* remote origin
Fetch URL: git@github.com:user/repo.git
Push URL: git@github.com:user/repo.git
HEAD branch: master
Remote branches:
develop tracked <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
但当然,仍然没有本地分支机构:
$ git branch
* master <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
看见现在,如果您只是签出develp,它将自动执行魔术:
$ git checkout develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'
很容易!
总结只需运行以下两个命令:
$ git clone git@github.com:user/repo.git
$ git checkout develop
为了创建新分支,我们可以使用以下命令git checkout--track-b示例原点/example对于已创建的分支,要在远程分支之间创建链接,请使用以下命令
gitbranch-u源/远程分支名称
这不是对这个问题的直接回答,但我想在这里为任何在尝试配置上游分支时可能遇到与我相同问题的人留下一条注释。
小心push.default。
对于较旧的git版本,默认值为匹配,如果您有以下情况,则会导致非常不理想的行为:
本地分支机构“主”跟踪到原点/主
远程分支“上游”跟踪到上游/主分支
如果您在“上游”分支上尝试“git push”,则使用push.default匹配,git将自动尝试将本地分支“master”合并为“upstream/master”,从而导致大量混乱。
这会产生更理智的行为:
git-config—全局push.default上游
编辑.git/config可能是最简单、最快的方法。无论如何,这就是处理远程分支的Git命令所做的。
如果你不想手动处理这个文件(这并不难),你可以一直使用git-config来完成……但同样,这只会编辑.git/config文件。
当然,在使用git签出时,有一些方法可以自动跟踪远程分支(例如,通过传递--track标志),但这些命令可以处理新的分支,而不是现有的分支。
以某种相关的方式,我试图将远程跟踪分支添加到现有分支,但无法访问系统上的远程存储库,我想在其中添加远程跟踪分支(因为我经常通过sneakernet将此回购的副本导出到另一个有权推送到该远程的系统)。我发现没有办法强制在本地上添加尚未提取的远程分支(因此本地不知道该分支在远程上存在,我会得到错误:请求的上游分支“origin/remotebranchname”不存在)。
最后,我通过在.git/refs/remotes/origin/remothbranchname处添加一个新的头文件,然后将ref(眼球移动最快,虽然很蹩脚;-)从有权访问原始存储库的系统复制到工作站(使用我添加远程分支的本地存储库),成功地添加了以前未知的新远程分支(无需获取)。
完成后,我可以使用gitbranch--setupstreamto=origin/remotebranchname