为什么我不能在创建远程仓库后直接执行 git 推送?

Why can't I just do git push after creating remote repo?

创建新的 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

那么我的理解是你的本地仓库是"connected to"(再次被跟踪)你的远程Git的远程master分支集线器回购(再次:https://github.com/<myuser>/<myRepo>.git)。

那为什么我在下一个命令上需要 -u origin master 也就是说,为什么我需要上面的最后一个命令是 git push -u origin master,而不仅仅是 git push?!本地回购是 "connected" 到远程主机,对吧?!那么为什么我不能 git push 它呢?

运行 git remote add... 只是标记了一个遥控器 URL。它没有 "connect" 任何东西。特别是,它不会在您的本地分支机构和远程分支机构之间建立任何关联。这 发生在每个分支的基础上(也就是说,说您的 存储库 连接到另一个 repository; 只能从个别分支来谈追踪)。只有当你git checkout一个本地分支对应一个远程分支时,或者你在运行宁git push时用-u显式设置跟踪信息时,才会建立跟踪关系。

考虑您有多个遥控器的情况,例如你有 运行 类似的东西:

git remote add upstream ...
git remote add origin ...
git remote add anotherdeveloper ...

如果您有一个名为 master 的本地分支,除非您明确告知 git,否则应该 git push 将您的更改发送到哪些远程分支?