仅作澄清(在ubuntu 12.04上使用git版本1.7.9.5):
Git会添加/删除远程。这些是带有服务器附加的git的远程实例。
git remote add myremote git://remoteurl
你可以这样获取git存储库:
git fetch myremote
看起来这会创建一个名为“myremote”的分支,然而该分支的远程设置不会自动完成。要解决这个问题,您需要执行以下步骤:
首先,请确认您有此问题,即:
git config -l | grep myremote
你应该能看到类似这样的内容:
remote.myremote.url=git://remoteurl
remote.myremote.fetch=+refs/heads/*:refs/remotes/myremote/*
branch.myremote.remote=.
branch.myremote.merge=refs/heads/master
如果你看到 branch.myremote.remote=.
,那么你应该继续进行:
git config branch.myremote.remote myremote
git checkout myremote
git pull
你现在应该与远程仓库保持同步,而且你的推送/拉取应该与相应的远程关联。你可以通过这种方式 按分支 切换远程仓库。[注][1]
根据 Git官方配置文档,你可以设置一个 默认 推送分支(只需在该页面上搜索remote.pushdefault),但请记住,这不会影响已经存在的存储库/分支,因此这仅适用于新的存储库/分支。你应该记住,--global
会设置特定于用户的存储库默认值(~/.gitconfig),--system
会设置系统范围的存储库默认值(/etc/gitconfig),而没有任何标志将为当前存储库(./.gitconfig)设置配置选项。
还应该注意,push.default 配置选项是用于配置 ref-spec 行为,而不是 远程 行为。
[1]: git branch --set-upstream myotherremote
通常可以在这里使用,但是如果使用 git branch --set-upstream myremote
,git 将抱怨它不会将一个分支设置为它自己的远程。然而,我认为这是错误的行为。