1

在结帐到主分支时,我得到了:

错误:以下未跟踪的工作树文件将被结帐覆盖:
nbproject/private/config.properties
nbproject/private/private.properties
nbproject/private/private.xml
nbproject/project.properties
nbproject/project.xml

Please move or remove them before you can switch branches.  

Aborting

所以我已经删除了它们(我已经在 repo 之外的其他地方备份了这些文件),并且我能够再次切换。

我得到这个的原因是:

dev 忽略了这些文件。master 不是,因为那里没有 .gitignore 文件。

他们都应该忽略这些文件。

另外,当我将其推送到远程存储库时,这些更改也应该传播到那些远程存储库。

我们如何将该 .gitignore 文件添加到 master 中,以免再次发生这种情况?

4

1 回答 1

7

添加.gitignore文件与添加任何其他文件相同。创建它,以及您要忽略的内容,然后添加并提交它。您可以使用以下命令专门忽略这些文件:

echo /nbproject/private/config.properties >> .gitignore
echo /nbproject/private/private.properties >> .gitignore
echo /nbproject/private/private.xml >> .gitignore
echo /nbproject/project.properties >> .gitignore
echo /nbproject/project.xml >> .gitignore

git add .gitignore
git commit -m "Add some ignores."

您可能需要在所有受影响的分支上执行相同的操作。

但是,你确实有其他事情发生。git 告诉您这些文件妨碍了这一事实,并不是因为它们在您的主分支上被忽略了……而是因为它们已被提交到您的主分支。IOW,它们现在处于版本控制之下。我认为您不仅需要忽略它们,还可能将它们从版本控制中删除。这将是您可能希望与您的团队协调的事情,以便 master 上的任何人都知道文件将会消失,并且他们可以事先备份它们。

更新:MEM和我聊过这个。我们最终通过制作另一个克隆、签出 master、从他的 dev 分支添加 .gitignore(通过git show dev:.gitignore > .gitignore)来修复他的存储库,然后将该修订版取回他的原始项目(通过git fetch /path/to/fix master:master)。一旦他有了新的修订版,我们就把它推送到遥控器上,这样其他人也可以拥有它。

于 2012-09-03T10:19:24.073 回答