我已经开始玩Git并遇到过"上游"和"下游"这两个词.我之前见过这些,但从未完全理解它们.这些术语在SCM(软件配置管理工具)和源代码的上下文中意味着什么?
尽管我最好去理解它,但我使用git显然很糟糕.
从kernel.org为git push:
-u
--set上游
对于每个最新或成功推送的分支,添加上游(跟踪)引用,由无参数git-pull(1)和其他命令使用.有关更多信息,请参阅
branch.<name>.mergegit-config(1).
这是branch.<name>.merge来自git config:
branch.<name>.merge定义与
branch.<name>.remote给定分支的上游分支一起.它告诉git fetch/git pull合并哪个分支,也可以影响git push(参见push.default).在分支中<name>,它告诉git fetch默认的refspec被标记为在FETCH_HEAD中合并.该值的处理类似于refspec的远程部分,并且必须匹配从给定的远程提取的ref"branch.<name>.remote".git pull(首先调用git fetch)使用合并信息来查找默认分支以进行合并.如果没有此选项,git pull默认合并第一个引用的refspec.指定多个值以获得章鱼合并.如果你想设置git pull以便它<name>从本地存储库中的另一个分支合并,你可以指向branch.<name>.merge所需的分支,并使用特殊设置.(期间)branch.<name>.remote.
我成功地使用github建立了一个远程存储库,并且我成功地将我的第一次提交推送到了:
git push -u origin master
Run Code Online (Sandbox Code Playgroud)
然后,我在不知不觉中成功地将我的第二次提交推送到我的远程存储库:
git commit -m '[...]'
Run Code Online (Sandbox Code Playgroud)
然而,错误地以为我将不得不再次推到origin从master,我跑:
# note: no -u
git push origin master
Run Code Online (Sandbox Code Playgroud)
那是做什么的?它似乎没有任何影响.我"撤消"了git push -u origin master吗?
在一篇文章已在StackOverflow上几次被引用(例如1),论述不对称之间git push和git pull,并提到了以下几点:
更新:感谢David Ongaro,他在下面指出自git 1.7.4.2以来,push.default选项的建议值是上游而不是跟踪,尽管跟踪仍然可以用作不推荐使用的同义词.描述该更改的提交消息很好,因为它表明在与远程存储库中的上游分支设置此关联的上下文中,正在努力弃用术语"跟踪".(git branch中的"track"完全不同的意思 - 跟踪和"远程跟踪分支"在尝试向人们介绍git时长期以来一直激怒我.)
他指的是什么区别:
在最后一句话?
我在本地计算机和生产服务器上都有我的应用程序。我可以从命令行推送。但是我不能在 Atom 上,因为我没有遥控器。我可以承诺,但我无法推动或拉动。
对于我之前的一些项目,我能够做到这一点,Atom 无需我做任何事情就可以识别 git remote。
是什么原因?如何将 git remote 添加到 Atom?