git push和git pull有什么区别?

我今天偶然发现了一些奇怪的东西。 我在夏天的时候问过一个同事帮我为自己的代码build立了一个新的远程git仓库,对于他做了什么以及我想做什么感到困惑。 我请求他发送他的configuration,以便能够看到他的遥控器的path,发现他没有遥控器。 当我问他这个问题时,他这样解释他的工作stream程:

  1. 改变本地的东西
  2. 承诺
  3. 移到远程目录
  4. git拉c:\ localdir

所以不是推到遥远的地方,而是不断地从他的本地回购站点到我们的服务器。 一些倒退的工作。 当我面对他的时候,他问我有什么不同,我不能回答他,但我认为有一些事情是正确的?

所以我对你们的问题是:推动遥控器和遥控器的区别是什么?

推到远程:发送一些提交你必须另一个git回购。 git回购被认为是“远程”,但它可以是在您的硬盘驱动器的另一个文件夹回购。 从远程提取:从远程仓库获取一些提交并将它们合并到当前的HEAD(您当前正在购买的仓库)

你的同事可能使用pull而不是push,因为你的版本库可能没有可用(没有运行git守护进程,或者gitweb或者ssh服务器),但是他可以从你的计算机上获得。 因为这是一个服务器,他可能不想公开一个可能成为攻击媒介的git守护进程/服务。

但是,如果您的存储库是共享/可用的,他只能做到:

  1. 改变本地的东西
  2. 承诺
  3. 推送到您的存储库

在我看来,您可以让用户将他们的提交推送到某个被认为是“主”的存储库,或者让他们向有权修改“主”的单个用户发送请求。

例如,Github不会让非贡献者推送到存储库,而是允许他们发送pull请求,以便贡献者可以整合他们的更改。

是的,它正在倒退。

原则工作stream程是:

  1. 改变本地的东西
  2. 承诺
  3. 推到远程目录

一个用例( Dolanor解释另一个用例)是不会推送到远程的,那就是在远程机器上检出一个工作副本(即它不是裸露的回购)。 当他想要推送一个在远程盒子上签出的分支(例如master:master )时,由于推送到签出分支是被禁止的,所以这将不会成功。

在我看来,这是跳转到远程计算机的唯一用例,而不是从本地计算机推送。

没有,回购是彼此的副本,拉和推只是方向stream动。 与同事的方法不同的是,他添加了第四个不需要的命令。