如何解开文件(git和git GUI)

时间:2016-12-09 00:55:53

标签: git git-gui

我正在使用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会自动将其删除吗?

感谢

2 个答案:

答案 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/了解更多信息。

希望这有帮助!

迪伦