2012-06-28 228 views
39

我刚刚偶然发现了一些今天奇怪的东西。我在夏季的工作中问了一位同事,帮助我为我的代码建立了一个新的远程git仓库,并且对他做了什么以及我想做什么感到困惑。我要求他发送他的配置文件,以便能够看到他的遥控器的路径,并发现他没有遥控器。当我问他这一点,他解释他的工作流程是这样的:git push和git pull有什么区别?

  1. 改变某些事情了本地
  2. 提交
  3. 移动到远程目录
  4. 混帐拉C:\和localdir

所以不是推送到远程他不断从他的本地回购拉到我们的服务器上。向后工作的种类。当我面对他时,他问我有什么不同,我不能真正回答他,但我认为有一些事情是正确的?

所以我对你们所有人的问题是:推动远程和从远程拉动的区别是什么?

+4

@Downvoters:请记住让人知道为什么,这样可以改善问题。 – Zeemee

+2

倾向于downvote,因为问题**听起来可笑,但实际上不是!现在改用upvoting。 – eckes

+2

@穆尔穆特。哈,要知道我做错了,如果有人只是踢我的脸。 =) – Qw4z1

回答

10

推送到远程:发送一些提交你必须另一个git回购。 git repo被认为是“远程”,但它可以是硬盘驱动器上另一个文件夹中的回购。 从远程拉:从远程回购得到一些提交并在当前的HEAD合并它们(您当前的回购结算)

你的同事可能会利用拉而不是推,因为你的资料库可能没有用(没有运行git守护进程,或gitweb或ssh服务器),但他的计算机可用。因为它是一个服务器,他可能不想公开一个可能成为攻击媒介的git守护进程/服务。

但是,如果你的资料​​库中的共享/可用,他只是已经能够做到:

  1. 改变一些本地
  2. 提交
  3. 推到你的资料库
+1

我认为这是这种情况,因为我也遇到了推送到服务器的一些问题。 – Qw4z1

+2

然后就是这样。正如[eckes](http://stackoverflow.com/a/11240793)告诉的那样,服务器可能已经有一个已经检出的目录,它反映了master作为生产版本。所以您将无法从本地分支推送到远程主分支,因为它已被检出以满足生产需求。 – Dolanor

0

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

1

是的,它正在倒退。

原理工作流程是:

  1. 改变一些本地
  2. 提交
  3. 推到远程目录

一个用例(另一个是explained by Dolanor)不推到远程是一工作副本在远程机器上检出(即它不是裸露的回购)。当他想推送一个在远程盒子上签出的分支(例如master:master)时,这将不会成功,因为禁止推送签出分支。

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

+1

我解释了repo不可用的其他情况(没有git守护进程等)。我忘记了已经检出的存储库。所以似乎有两种情况可以做这种工作流程 – Dolanor

+0

@Dolanor:你是对的!编辑答案。 – eckes

+0

所以基本上推拉只是向相反的方向扔东西? – Qw4z1

13

在我您可以让用户将他们的提交推送到被认为是“主”的存储库,或者让他们向有权修改所述“主”的单个用户发送请求。例如,Github不会让非贡献者推送到存储库,但会允许他们发送pull请求,以便贡献者可以整合他们的更改。

+2

GitHub拉请求示例使我对它更加清楚。谢谢! – Qw4z1

+0

这个答案用简单的术语来解释它,而不是为新手“理解”引入更多的新术语。 – NavkarJ

相关问题