Git pull或git fetch忽略了一些文件

时间:2016-06-08 12:04:46

标签: git github merge

我们正在同一个基础上开发多个项目,因此我们有一个公司存储库,其中包含一些分支(每个项目1个,一些用于合并项目),每个开发人员都在他自己的回购中使用相同(或多或少)的分支。现在其中一个项目上线了,它基本上成了主人。其他项目应合并到它而不会破坏任何东西。

所以我在我的仓库中拥有一个项目的所有代码/元数据,现在我必须从上游(实时项目)拉出主机以合并所有内容。我试过的只是:

git pull upstream master

这很有效(至少我认为它确实如此)。验证后,我们得到一些错误,说有些文件丢失了。所以我查了一下,显然有些文件确实丢失了,但git pull upstream master没有拉它们,所以在我的分支中我只看到一个文件夹中的很多(40+)文件中的一些(可能很多)其他文件夹中缺少更多,我还没有检查其他文件夹。)

如果我再试一次,我会得到以下内容:

MySuperAwesomeLaptopName:ProjectLocation Novarg$ git pull upstream master
From https://github.com/just_some_super_secret_repository/some_secret_project
 * branch            master     -> FETCH_HEAD
Already up-to-date.

但我确实清楚地知道它不是最新的,很多文件都丢失了!

我已经看过this question,但OP要求任何解决方案,答案基本上是强制覆盖所有内容

在我的情况下,我需要从远程存储库获取然后合并。

我可以使用另一个问题的答案,只强制覆盖我所拥有的内容,但它会删除我的所有工作,所以我确实需要合并所有内容。

我可以在我的分支中手动创建所有这些文件,但这意味着我必须查看所有名称并找到缺少的名称,然后手动复制代码并保存。

我还检查了我的.gitignore文件,这些文件不在那里。

这种行为可能是什么原因,我怎样才能强制git从上游提取/获取所有内容?

1 个答案:

答案 0 :(得分:0)

所以基本上我还没有找到解决问题的方法,但我找到了解决方法。如果有人可以对这种行为给出一个很好的解释,我很乐意接受你的回答,但是现在我将这个标记视为好。

基本上我做的是:

  • 创建新分支
  • 拉上游主人
  • 制作了丢失文件的副本
  • 切换回我的分行
  • 粘贴了这些文件的副本
  • 将它们添加到git

就git命令而言:

git checkout -b some_other_super_awesome_branch
git pull upstream master

将丢失的文件复制到其他目录

git checkout my_other_branch

在那里粘贴丢失的文件

git add path/to/my/missing/files/*
git push origin myCoolBranch