我正在使用git GUI(与Git bash一起使用)。现在,我知道如果我想忽略git的文件,我必须将它们放在.gitignore文件中。
1)我已经知道windows中的git不会为你创建一个.gitignore文件,你必须自己创建它。 git GUI也不会这样做。这是对的吗?
现在我的特殊情况:
我在管理这个项目的过程中犯了一个错误,并且与我的.c和.h文件一起,我还跟踪了另一个文件(我们称之为“shouldnottrack.file”)。此文件由构建过程生成,因此原则上不应跟踪。
但是我做了它并且它被包含在提交中(暂存,提交等)。
现在,我想取消跟踪此文件。
我是通过git checkout -- shouldnottrack.file
暂时完成的,但这只能运作一次
2)我怎样才能解开这个档案? (GUI,命令,任何方法都可以)
3)如果我将此文件包含在.gitignore文件中,git会自动将其删除吗?
感谢
答案 0 :(得分:10)
您必须将其添加到'.gitignore',然后通过执行git rm
(如果您要删除工作目录中的文件)或git rm --cached
(如果您不喜欢)将其从git中删除我想删除它们,但只是停下来跟踪它们)。
然后,提交此文件删除。
答案 1 :(得分:0)
不确定您的第一个问题,因为我专门使用Git CLI但是对于您的第二个问题,请尝试以下方法:
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE' \
--prune-empty --tag-name-filter cat -- --all
使用您要从历史记录中清除的实际文件名替换PATH-TO-YOUR-FILE。您应该看到以下内容:
Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (266/266)
Ref refs/heads/master was rewritten
如果成功 - 在此之后如果您已经推送到遥控器,则需要执行git push --force
覆盖它。分支机构的安全设置可能会拒绝推送。
最后,为了防止这种情况再次发生,请将相关文件添加到您的忽略文件中,git将阻止发生任何跟踪。
上面的答案会有效但是我强烈建议这种方法,如果数据是敏感的 - 即密码,ssh密钥等,因为文件仍然在历史中。
您可以在此处https://help.github.com/articles/removing-files-from-a-repository-s-history/和此处https://help.github.com/articles/remove-sensitive-data/了解更多信息。
希望这有帮助!
迪伦