2013-01-19 244 views
2

我在linux服务器上创建了一个git存储库。对于更长的一部分,我一个人工作,一切工作正常。当一位朋友加入时,他抱怨说他只能看到主分支。我已经在我的机器上检查了这一点,以及在VMWare中运行ubuntu实例的地方,实际上也是如此。为了让我更加困惑,我能够从Ubuntu机器上推出一个新的分支,这个分支只能从Ubuntu客户端内部看到,但在Windows上的客户端上不可见。GIT同一个存储库在不同的机器上有不同的分支

所以我面临的问题是,从两个(在我的情况在逻辑上)独立的机器,但对同一库我看到不同的分支

我原本推分行在Windows上使用Git的bash中,如果我有我运行的Git分支-r我得到:

在Ubuntu 的Git分支
origin/HEAD -> origin/master 
origin/develop 
origin/develop2 
origin/master 

-r我得到

origin/HEAD -> origin/master 
origin/develop3 
origin/master 

我可以做混帐取,就像我喜欢的,简单的东西像,他们是针对一个单独的回购工作(除了为共享的主分支)。这可能是因为我思念配置以某种方式git的服务器,或者可能带有按键的问题,不知道,需要的建议,感谢

+0

什么是每个存储库的“origin”?你有没有第三个仓库(比如GitHub),或者你是否直接访问对方的仓库? – poke

+0

原点是我已安装在远程服务器上的裸存储库。比我克隆,分支,推动,并没有注意到任何问题,直到另一个人加入。我在这里没有使用GitHub。 – learnAndImprove

回答

3

注意git branch -r将只列出存储在本地存储库中的远程分支机构。所以这并不一定意味着这些分支就像远程仓库本身那样存在。默认情况下,git fetch将从远程存储库获取所有分支,并将远程引用添加到本地存储库中。因此,您将拥有本地远程存在的所有分支机构。

但是,git fetch不会执行的操作是清理已创建但稍后从远程存储库中删除的远程分支。要做到这一点,请使用git fetch origin --prune。这将使Git更新远程存储库的远程分支列表。

因此,如果分支机构稍后拆除,您将会注意到这一点。如果这不会使远程分支列表同步,那么很可能您的远程存储库实际上不一样。您可以使用git remote -v获取远程配置的列表,并仔细检查两台计算机上的配置是否相同。

+0

嗨打钩,通过git remote -v我得到完全相同的输出。我已经尝试过修剪选项,但仍有分支不同步。然而,你可能正在朝着正确的方向射击,因为过去我曾经失去过远程追踪分支,并且再次推动了当地分支机构。 – learnAndImprove

+1

好吧,那真的很奇怪。由于您似乎可以直接访问裸仓库,您是否可以进入该目录并在其中运行'git branch -a'?这样你至少会得到一个真正存在于远程存储器上的分支清单。从那里开始,我们可以进一步了解造成这一切的原因。 – poke

+0

Hi Poke,一个很棒的提示,我认为你的第一个答案也是对的。当我在远程直接检查分支时,它与我在Ubuntu客户端中看到的相匹配。我已经创建了新的(旧)分支,并推出了,现在一切似乎都很好。 有一点对我来说仍然是一种莫名其妙的感觉,当我在不同的本地软件仓库从远程仓库克隆我的Windows机器时,我总是看到不存在的远程分支,这就是他们确实存在的远程分支。奇怪。感谢所有的帮助。 – learnAndImprove

相关问题