主分支上缺少gitignore - 如何“修复”它?

时间:2012-09-03 09:09:47

标签: git

结帐到主分店时,我得到了:

  

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

Please move or remove them before you can switch branches.  

Aborting

所以我删除了它们(我在repo之外的其他地方备份了这些文件),然后我又能够切换了。

我得到这个的原因是因为:

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

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

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

我们如何将.gitignore文件添加到主文件中,以免再次发生?

1 个答案:

答案 0 :(得分:5)

添加.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告诉你这些文件是阻碍的,​​并不是因为它们在你的主分支上被忽略了......这是因为它们已经被提交到你的主分支了。现在,他们现在受版本控制。我认为您不仅需要忽略它们,还可能将它们从版本控制中删除。这可能是你可能希望与你的团队协调的事情,这样主人就知道文件会消失,他们可以预先备份它们。

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