git push-u my_url master中发生了什么

git push-u my_url master中发生了什么,git,Git,我用git init和一些提交创建了一个存储库 忘记了第一次执行git remote add origin my_git_url的正确顺序,我只是执行了git push-u my_git_url master 推送成功,显示分支主机设置为从my_git_url跟踪远程分支主机。 那么,我目前的回购协议状况如何?我知道origin是未设置的,那么它是否正在跟踪一个没有名字、只有url的匿名遥控器?使用-u选项推送的副作用,如这里提到的 git push -u origin master 等效的

我用git init和一些提交创建了一个存储库

忘记了第一次执行
git remote add origin my_git_url
的正确顺序,我只是执行了
git push-u my_git_url master

推送成功,显示分支主机设置为从my_git_url跟踪远程分支主机。


那么,我目前的回购协议状况如何?我知道
origin
是未设置的,那么它是否正在跟踪一个没有名字、只有url的匿名遥控器?

使用-u选项推送的副作用,如这里提到的

 git push -u origin master
等效的长选项是
——设置为上游

git分支--set-upstream
已被弃用,可能在相对较远的将来被删除

git分支[-u |--set upstream to]
引入的参数顺序更为合理

如果要使现有分支跟踪远程分支

git branch -u upstream/foo
同样,您只需检查
.git/config
文件即可查看。然而,Git说:

分支主机设置为跟踪来自的远程分支主机
您将看到:

[分支“主控”]
远程=
合并=参考/头/主
换句话说,你的Git现在不是通过一个命名的远程设备来记住另一个Git的分支(这可以让你获得所有其他好处,比如远程跟踪分支和不必输入长URL),而是通过一个匿名远程设备来记住一个上游。
git-fetch
git-pull
(反正只运行
git-fetch
)都会联系URL上的任何git应答,就像您使用命名的远程设备并使其遵循远程设备的URL设置一样。运行
git pull
的第二个命令将使用
FETCH_HEAD
中留下的跟踪(实际上,
git pull
强制执行此操作,无论您是否切换到使用命名的远程设备)


只需设置一个命名的远程,运行
git fetch
来填充远程跟踪分支,然后再次使用
git push-u
或使用
git branch--set upstream to
(如中所示)来修复
branch.master.remote
设置,获取远程跟踪分支的好处。

您可能可以查看
.git/config
了解发生了什么。如果使用匿名远程,我无法获取远程跟踪分支?在我看来,唯一的区别是,它现在跟踪的不是我的
master
跟踪
origin/master
,而是
我的git\u url/master
,这看起来是一样的吗?(gitk没有显示被跟踪的远程分支,这似乎表明情况并非如此……@Woofas:你把“跟踪分支”的想法和“远程跟踪分支”的想法混为一谈了。Git允许一个分支跟踪另一个分支,但有一个完全独立的东西,称为远程跟踪分支。更令人困惑的是,“远程跟踪分支”是本地的,而不是远程的;根本不跟踪其他分支;甚至不是一个分支!:-)不过,这是Git给它起的名字。无论如何,像
origin/master
这样的远程跟踪分支只能在使用像
origin
这样的命名远程分支时创建,而不能在使用URL时创建。运行
git fetch
创建并更新它们,基于[cont'd]。。。基于
.git/config
中的
remote..fetch
的内容。要使其工作,遥控器必须在其中有一个
[remote”“]
部分,带有
获取
行(实际上是一行或多行)。如果你看一个典型的
.git/config
你会看到
[remote“origin”]
url=…
,然后
fetch=+refs/heads/*:refs/remotes/origin/*
。正是这最后一行使得
git fetch
创建并更新
origin/master
等等。如果您想为“远程跟踪分支”取一个更好的名称,我们可以将其称为“上次与该git对话并决定更新本地内存时在外部git上找到的分支的本地缓存内存”,但这有点笨拙。
Branch master set up to track remote branch master from <url>
[branch "master"]
        remote = <url>
        merge = refs/heads/master