但是如果你真的想要分离“所有”和“原点”遥控器,你仍然可以正确地做你想做的事。
关键是(再一次)在非常酷的 git 配置中。
让我们看看当你git push all
:
为什么 git 抱怨“提前提交”?因为它将您当前的分支(master)与上游分支(origin/master)进行比较。
事实是,我们可以改变(任何一个都足够了):
更新的分支,因此我们将所有内容都提取到 refs/remote/origin 而不是 refs/remote/all 中。在[remote "all"]
配置块中,该行
fetch = +refs/heads/*:refs/remotes/all/*
意思是“更新 refs/remotes/all”。因此,您只需将其添加/更改为:
`fetch = +refs/heads/*:refs/remotes/origin/*`
它完成了:git fetch origin
现在git fetch all
将具有相同的效果(更新origin/master
分支)
警告:过多地使用 fetch 配置可能会导致您不知道真正完成了什么的存储库。所以保持简单和合乎逻辑。
- git 比较当前分支的远程分支
如果你git push --set-upstream all
,那么你的 master 分支将跟随 all/master 而不是 origin/master。所以它不会抱怨你有承诺。请注意,您只需要这样做一次,因为上游分支是永久保留的。
简而言之 :
方法 1:更改远程“全部”的获取配置
[remote "all"]
url = (url1)
url = (url2)
-fetch = +refs/heads/*:refs/remotes/all/*
+fetch = +refs/heads/*:refs/remotes/origin/*
方法 2:让你的分支跟随 all/master 而不是 origin/master
[branch "master"]
-remote = origin
+remote = all
merge = refs/heads/master