Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定git中的默认远程(整个项目的默认值,而不是每个分支的默认值)_Git - Fatal编程技术网

确定git中的默认远程(整个项目的默认值,而不是每个分支的默认值)

确定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

我所处的场景是,我们需要很长时间才能从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 = +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签出执行