是否有任何 git 命令可以为本地存储库中的分支(完美适用于所有分支)设置远程存储库,而无需将本地提交推送到远程?
简而言之,我想要得到的所有东西都可以通过使用 flag 来完成--all:
git push --all
也可以选择设置上游-u:
git push --all -u
但我不想推动任何提交。
期望的结果只是设置本地和远程存储库之间的链接,git push因此如果您git push将来不需要指定远程,也可以跳过--all选项。
对于一个分支,请参阅问题phd linked-to,即使现有的 Git 分支跟踪远程分支?
要对某些分支集执行此操作,请使用循环。要对所有分支执行此操作,请使用git for-each-ref循环遍历所有分支,如以下 sh / bash 循环构造所示:
git for-each-ref --format='%(refname:short)' |
while read name; do
git branch --set-upstream-to=origin/$name $name
done
Run Code Online (Sandbox Code Playgroud)
(实际上,这只是一行,只是在这里分成了更易读的行)。
这假设您希望每个的上游名称name都是。如果没有,请适当替换。 请注意,这将覆盖每个此类名称的任何现有上游集,或者如果尚不存在具有该名称的上游,则会失败。origin/name
如果origin/xyzzy还不存在,则不能将分支设置xyzzy为其origin/xyzzy上游。这是完全符合逻辑的。然而,这可能不是你想要的。
您可以通过低于 的级别,用原始操作git branch替换 来覆盖 Git 对此的智能:git branch --set-upstream-togit config
git for-each-ref --format='%(refname:short)' |
while read name; do
git config branch.$name.remote origin
git config branch.$name.merge refs/heads/$name
done
Run Code Online (Sandbox Code Playgroud)
这假设您的remote.origin.fetch设置是+refs/heads/*:refs/remotes/origin/*. 如果不是,您应该已经知道您在做什么以及如何修改上面的循环。
请注意,将上游设置为不存在的远程跟踪名称将使 Git 相信该名称曾经存在但现在已消失:git branch -vv将报告上游为“消失”。Git 对于因果关系不是很聪明,所以它认为如果上游被设置为一个不存在的分支,那么因果顺序一定是:
事实上,真正的原因是您故意不恰当地设置上游,并预期该设置将来会变得合适。所以忽略“gone”注释。
| 归档时间: |
|
| 查看次数: |
1909 次 |
| 最近记录: |