我正在使用git GUI(与Git bash一起使用)。现在,我知道如果我想忽略git的文件,我必须把它们放在.gitignore文件中。
1)我已经知道Windows中的git不会为你创建一个.gitignore文件,你必须自己创建。Git GUI也不会这样做。是这样吗?
我的特殊情况:
我在管理这个项目的一开始犯了一个错误,我还跟踪了另一个文件(让我们称之为“shouldnottrack.file”)。此文件由构建过程生成,因此原则上不应跟踪。
但我做到了,它被包含在提交中(staged,commited等)。
现在,我想取消跟踪此文件。
我暂时通过执行git checkout -- shouldnottrack.file
来完成它,但这只工作一次
1.如何取消跟踪此文件?(GUI、命令、任何方法均可)
1.如果我将这个文件包含在.gitignore文件中,git会自动取消跟踪它吗?
2条答案
按热度按时间qcbq4gxm1#
您必须将其添加到
.gitignore
并从git存储库中删除它,以便它停止跟踪它。.gitignore
对已跟踪的文件没有影响。您有两种可能性,这取决于您是否仍然希望将文件保留在工作目录中:
*如果要删除工作目录下的文件,请执行
git rm
。*如果您想保留它们但只是停止跟踪它们,请执行
git rm --cached
。然后,提交此文件删除。
htrmnn0y2#
不确定你的第一个问题,因为我只使用Git CLI,但是对于你的第二个问题,请尝试以下操作:
将PATH-TO-YOUR-FILE替换为要从历史中清除的实际文件名。您应该会看到以下内容:
如果成功-在此之后,如果您已经推送到远程,则需要执行
git push --force
来覆盖它。分支上的安全设置可能会拒绝推送。最后,为了防止这种情况再次发生,将有问题的文件添加到.gitignore文件中,git将阻止任何跟踪的发生。
上面的答案将工作,但我强烈建议这种方法,如果数据是敏感的-即密码,ssh密钥等文件将仍然在历史中。
你可以在这里阅读更多https://help.github.com/articles/removing-files-from-a-repository-s-history/和这里https://help.github.com/articles/remove-sensitive-data/。