git push-u my_url master中发生了什么
我用git init和一些提交创建了一个存储库 忘记了第一次执行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 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