文件在推拉之间消失,中间有一个裸仓

时间:2010-03-04 07:27:29

标签: git

所以我有一个包含两个分支的本地存储库: master shop 。我还有一个裸存储库和一个远程存储库。我可以在所有这些之间推送和拉动,但有些文件不断丢失。我正在做以下事情:

来自我当地的根:

git push barereposerver shop

一切都很好。哇,我们推到那儿。然后从远程root,做了一个git init和git remote add bare ssh://blahblahblah/blah.git,我正在做:

git pull bare shop

但出于某种原因,我有一些没有发现的文件。

我知道我没有提供太多信息,但我对git很新,而且我还不知道正确的术语。我很乐意问你一些问题,看看你是否可以帮我解决这个问题。非常感谢!

更新:我正在寻找的横向版本。我想从其他人那里得到 - >另外,通过一个简单的回购:http://droplr.com/wEB1q

1 个答案:

答案 0 :(得分:1)

从你的图表中看,你所做的是:

  • 推向裸地(从当地)
  • 然后,从远程,注册裸仓库,并从裸露
  

“来自我的本地root:git push bareserver shop”

这是:

alt text


  

未通过的集合是本地分支上存在的一组新文件,但无论出于何种原因,都不会被推送到远程分支

那么,在尝试推送本地存储库之前,您实际上添加然后提交这些文件了吗? (例如,参见this question


根据评论,以下是我们如何一起追踪此问题的根本原因:

另一种排除故障的方法是注意本地提交的SHA1(包含您的文件)和远程端获取的SHA1 (从裸露之后):如果是解释不同的内容是不一样的,但你也可以在裸仓和本地仓库上搜索SHA1(在远程获得),以检查SHA1(缺少某些文件)引用的提交。< / p>

  

这是这个数字吗? 591178c18126be127eaa417fa6b3be86c0fce969如果是这样,我在远程和本地获得相同的号码。

     

SHA1确实是这样的数字。 如果在本地和repo上相同,则内容必须相同。尝试(如果你没有对遥控器进行任何当前的修改)git reset --hard(再次,在远程仓库上);首先检查您的远程仓库中是否有正确的分支机构检查)

     

并排,这两个来自git log:

     

并排,两个文件夹包含不同的文件:

如果SHA1相同,那么缺少的目录不应该是本地提交的一部分
尝试在第二个本地仓库中克隆您的本地仓库,并检查您是否在本地仓库中看到相同的内容。

  

奇怪。 当我将本地仓库克隆到另一个本地仓库时,文件再次丢失。我从正确的分支运行了克隆命令。想法为什么会这样?

     

这是克隆和显示不同结果的整个过程的并排:

现在,本地克隆中缺少目录的事实证明,这些目录首先不是本地repo提交的一部分。这些目录是空的吗? (因为即使添加,它们也不会被提交)

  是的,他们完全是空的   它们是最初创建为空的目录,但是WP插件能够写入以便添加内容所需的目录。
  根据这个SO question,我可以添加.gitignore来尝试。在此之前,在使用git的两周内,我已经看到了无处可见的文档。看起来像是一个很难沟通的大问题,或者我错过了什么?

这实际上是一个重要的设计决策,是Git成为文件内容管理系统的一部分(参见Popularity of GitGit versus SVN)。

这些目录一旦添加了.gitignore,现在可以成功推送/拉取。