确定git中的默认远程(整个项目的默认值,而不是每个分支的默认值)
我所处的场景是,我们需要很长时间才能从repo服务器迁移到另一个服务器 因此,我的.git/config中有一个远程文件确定git中的默认远程(整个项目的默认值,而不是每个分支的默认值),git,Git,我所处的场景是,我们需要很长时间才能从repo服务器迁移到另一个服务器 因此,我的.git/config中有一个远程文件 [remote "upstream"] url = ssh://my.old.url/here fetch = +refs/heads/*:refs/remotes/upstream/* ... [remote "origin"] url = git@my.new.url/here fetch = +re
[remote "upstream"]
url = ssh://my.old.url/here
fetch = +refs/heads/*:refs/remotes/upstream/*
...
[remote "origin"]
url = git@my.new.url/here
fetch = +refs/heads/*:refs/remotes/origin/*
但是,每当我执行git status
或git push
或git pull
git checkout
时,它默认为上游而不是原点。如何将git命令的默认值设置为origin
澄清:我不是在每个分支的基础上提问,而是在项目的基础上提问,所以除非另有说明,否则所有命令都默认为origin
(最好通过git命令更新,而不是编辑配置文件。):
工作原理类似于“git push”,其中是当前分支的远程(如果当前分支未配置远程,则为“源”)
也就是说,要推送到原点,默认情况下,您需要为所有本地分支取消固定远程:
git for-each-ref --format="%(refname:short)" refs/heads/ |
xargs git branch --unset-upstream
请注意,这仅适用于文本来源。无法将上游设为全局默认值-您必须为每个分支配置它:
git for-each-ref --format="%(refname:short)" refs/heads/ |
xargs git branch --set-upstream-to=upstream
:
工作原理类似于“git push”,其中是当前分支的远程(如果当前分支未配置远程,则为“源”)
也就是说,要推送到原点,默认情况下,您需要为所有本地分支取消固定远程:
git for-each-ref --format="%(refname:short)" refs/heads/ |
xargs git branch --unset-upstream
请注意,这仅适用于文本来源。无法将上游设为全局默认值-您必须为每个分支配置它:
git for-each-ref --format="%(refname:short)" refs/heads/ |
xargs git branch --set-upstream-to=upstream
我不是在每个分支的基础上问
你可能不是在每个分支的基础上提问,但答案是在每个分支的基础上
这里的问题是,git-remote
没有做您认为它做的事情。它只是建立了一个名称。例如,您将名称上游
配置为ssh://my.old.url/here
所以现在当你说,例如,git push upstream main
,git知道upstream
的意思
但是当你简单明了地说git push
时,这与发生的事情无关。这意味着什么的规则内置于main
本身。你可以了解更多关于git分支设置的规则--all-vv
。这将向你展示每个分支以及它如何连接到相应的远程设备
非常不幸的是,本地分支和它默认推送到的远程分支之间的连接被称为分支的“上游”。这是Git中使用“上游”一词的许多完全相关的方式之一,与使用上游
作为远程名称无关
因此,在您有两个遥控器的情况下,我建议您使用完整形式的git push
,始终提供遥控器名称。如果git push
plain and simple甚至不存在,可能会更好。如果人们总是必须以完整形式发出push
和pull
命令,那么可能会更好地理解这些命令的实际作用
我不是在每个分支的基础上问
你可能不是在每个分支的基础上提问,但答案是在每个分支的基础上
这里的问题是,git-remote
没有做您认为它做的事情。它只是建立了一个名称。例如,您将名称上游
配置为ssh://my.old.url/here
所以现在当你说,例如,git push upstream main
,git知道upstream
的意思
但是当你简单明了地说git push
时,这与发生的事情无关。这意味着什么的规则内置于main
本身。你可以了解更多关于git分支设置的规则--all-vv
。这将向你展示每个分支以及它如何连接到相应的远程设备
非常不幸的是,本地分支和它默认推送到的远程分支之间的连接被称为分支的“上游”。这是Git中使用“上游”一词的许多完全相关的方式之一,与使用上游
作为远程名称无关
因此,在您有两个遥控器的情况下,我建议您使用完整形式的
git push
,始终提供遥控器名称。如果git push
plain and simple甚至不存在,可能会更好。如果人们总是必须以完整形式发出push
和pull
命令,那么可能对这些命令的实际作用有更好的理解。这回答了您的问题吗?这不是重复的。这个问题是问如何更改git的默认值origin
,而不是每个分支。这回答了您的问题吗?这不是重复的。这个问题是问如何更改git的默认值origin
全球范围内,而不是每个分支机构。尽管存在不止一个git push。git checkout是默认错误回购的一个主要例子。即使它存在于origin上而不存在于上游,但如果我尝试从origin签出分支机构,它也会抱怨它不存在于上游。很难深入探究对它的所有误解e可能有。git checkout
没有“默认远程”"; 它根本不会从远程签出分支。它检查了当地的一家分行。如果说git checkout main
失败,那是因为没有本地分支main
。如果您想从远程跟踪分支创建本地分支,那么作为快捷方式,您可以说,例如,git checkout remote/main
,但该远程跟踪分支需要已经存在,例如,git fetch
<代码>git签出执行