2017-04-25 160 views
1

我有一个使用git init和一些提交创建的仓库。git push会发生什么-u my_url master

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

推是成功的,它显示Branch master set up to track remote branch master from my_git_url.

那么,什么是我的当前回购的状态?我知道origin未被设置,它是否跟踪一个匿名远程,没有名字,只是网址?

+0

你或许可以看看'.git/config'知道发生了什么 –

回答

2

由于Piotr Skotnicki said in a comment,你可以观察一下你.git/config文件中看到。然而,在Git的说:

Branch master set up to track remote branch master from <url> 

你将看到的是:

[branch "master"] 
     remote = <url> 
     merge = refs/heads/master 

换句话说,而不是通过一个名为记住其他Git的分支远程(它可以让你远程追踪分支等所有其他好处,而不必输入长URL),你的Git现在记得你pstream由匿名远程。无论是git fetch还是git pull(它总是运行git fetch)都会联系任何Git在URL上的回答,就像他们会使用命名的远程服务器一样,并使它们跟随远程的URL设置。 git pull运行的第二个命令将使用FETCH_HEAD中留下的迹线(实际上,无论您是否切换到使用命名的远程,此功能都会强制执行此操作)。

刚刚成立了一个远程命名,运行git fetch来填充远程跟踪分支,然后要么git push -u一次,或使用git branch --set-upstream-to(如Jai Kumar Rajput's answer),以固定branch.master.remote设置,以获得远程跟踪分支效益背。

+0

因此,使用匿名远程,我无法获得远程跟踪分支?在我看来,唯一的区别是,不是我的'master'跟踪'origin/master',而是跟踪'my_git_url/master',这看起来是一样的吗? (gitk确实无法显示被跟踪的远程分支,这似乎暗示了其他情况......) – Woofas

+1

@Woofas:您将“跟踪分支”的想法与“远程跟踪分支”的想法混为一谈。Git让一个分支跟踪另一个分支,但是有一个完全独立的东西叫做远程跟踪分支。为了让它更加混乱,“远程追踪分支”是本地的,而不是遥远的;根本不跟踪另一个分支;甚至不是分支! :-)但是,这就是Git给它的名字。无论如何,像'origin/master'这样的远程跟踪分支只能在使用像“origin”这样的命名远程时创建,而不能在使用URL时创建。根据[远程]的内容,运行'git fetch'根据[续] – torek

+1

...创建并更新它们。在你的'.git/config'中使用 .fetch'。为此,遥控器必须有一个'[remote']'部分,并带有一个'fetch'行(一个或多个,真的)。如果你看一个典型的'.git/config',你会看到'[remote'origin']'有'url = ...',然后'fetch = + refs/heads/*:refs/remotes/origin/* '。这就是'git fetch'创建和更新'origin/master'等的最后一行。 – torek

0

这里与-u选项推喜欢提

git push -u origin master 

等效的长选项的副作用是--set-upstream

git branch --set-upstream已被弃用,并且可以在相对遥远的将来被移除。

git branch [-u|--set-upstream-to]已经引入了一系列参数。

如果你想使现有的分支追踪远程分支,

git branch -u upstream/foo 
相关问题