2017-06-18 68 views
2

我有我不想让git去追踪一个文件夹上的一些文件的时候,所以我将它们添加到该.gitignore像这样:Git的错误:“拒绝失去未跟踪文件”做合并

Directory/Build/ 

但是当我使用git status时,它们仍然显示为“未提交进行提交的修改文件”。我看着这件事,并建议使用清洁的git指数:

git rm --r --cached Directory/Build/ 

我这样做,以后git status一切,我想有未经跟踪被显示为Deleted: file的文件,我认为这是不够好他们将从工作树中删除(但我不认为这是本地的?)。

但是当我试图做git pull我得到了一些奇怪的合并冲突,我不知道如何解决:

error: refusing to lose untracked file at 'Directory/Build/..../file.class' 
error: refusing to lose untracked file at 'Directory/Build/..../file.jar' 

,也有一些

CONFLICT (modify/delete): ... 
CONFLICT (modify/delete): Directory/Build/..../file.jar deleted in HEAD and modified in <<id>>. Version <<id>> of Directory/Build/..../file.jar left in tree. 

我试着做git merge -Xours但它仍然给了我冲突。

如何解决?

+0

由于[VonC说](https://stackoverflow.com/a/44618504/1256452),你需要获取文件。 '-Xours'和'-Xtheirs'没有效果的原因是这些是我所说的“高级别”(commit-wide)冲突,但是这两个'-X'选项只是指示Git偏好一方或另一方当解决“低级别”(一个文件内部)冲突时。 – torek

回答

0

如果你已经添加了一些文件到Git,他们也跟踪,如果你把它们写入你的gitignore。所以你必须先删除它们。随着:

git rm --cached files 

然后文件被删除在你的仓库,但他们将保持本地。然后你可以把它写入gitignore,它们将被忽略。

如果您运行注释,则文件首先显示为已删除,因为您已完成该操作。因此添加添加并提交更改。那么它应该工作。之后,你不应该在你的目录中找到一些新的未跟踪文件。

2

你仍然需要,在rm --cached -r后,于:

  • 提交这些缺失
  • 移动build文件夹的方式进行(git的回购外):一git status必须表现出一个干净的工作树下一个命令来运行,
  • git pull --rebase(重播您的本地提交的上游分支的顶部)
  • 移动build文件夹回