创建一个新的GitHub仓库非常简单。在命令行上:
git init
git add .
git commit -m "Initial commit"
然后你进入GitHub并创建你的repo,为它创建一个Git URL,比如https://github.com/<myuser>/<myRepo>.git
等。然后你回到命令行:
git remote add origin https://github.com/<myuser>/<myRepo>.git
git push -u origin master
瞧 - 你有一个git回购!然而,有些东西并不适合我。发出此命令后:
git remote add origin https://github.com/<myuser>/<myRepo>.git
然后我的理解是你的本地仓库是“连接到”(被跟踪)远程GitHub仓库的远程master
分支(再次:https://github.com/<myuser>/<myRepo>.git
)。
那么为什么我需要在下一个命令上使用-u origin master
?也就是说,为什么我需要上面的最后一个命令才能成为git push -u origin master
,而不仅仅是git push
?!本地仓库“连接”到远程主机,对吧?!那么为什么我不能只是git push
呢?
运行git remote add...
只标记一个远程URL。它没有“连接”任何东西。特别是,它不会在您的本地分支和远程分支之间建立任何关联。这只发生在每个分支的基础上(也就是说,将您的存储库连接到另一个存储库是没有意义的;您只能谈论各个分支的跟踪)。只有在git checkout
对应于远程分支的本地分支时,或者在运行-u
时使用git push
明确设置跟踪信息时,才会设置跟踪关系。
考虑一种你有多个遥控器的情况,例如:你运行了类似的东西:
git remote add upstream ...
git remote add origin ...
git remote add anotherdeveloper ...
如果你有一个名为master
的本地分支,除非你明确地告诉git,否则git push
应该向哪些遥控器发送你的更改?