我希望这种改变永远不会发生,即使是在未来。我知道使用sourcetree是有可能的。人们总是说git命令可以做git GUI可以做的一切,甚至更多。但在这种情况下,我觉得也许GUI更强大。已尝试搜索堆栈溢出,但只找到有关未存储特定文件的结果。
zu0ti5jz1#
最好的方法是使用git rm --cached FILE从历史记录中删除该文件,然后将其添加到.gitignore。这样,该文件将不会被跟踪,将来也不会被修改,因为它不会在存储库中。如果你的问题是如何跟踪文件并忽略对跟踪文件的更改,Git FAQ很清楚这是不可能的:Git没有提供这样的方法。原因是如果Git需要覆盖这个文件,例如在 checkout 过程中,它不知道对文件的更改是否是宝贵的,应该保留,或者它们是否无关紧要,可以安全地销毁。因此,它必须采取安全的路线,并始终保留它们。尝试使用git update-index的某些功能是很有诱惑力的,即assume-unchanged和skip-worktree位,但这些功能不能正常工作,也不应该以这种方式使用。请注意,常见问题解答对配置文件的常见情况提供了建议:如果你的目标是修改一个配置文件,那么将一个文件签入到存储库中通常会很有帮助,该文件是一个模板或一组默认值,然后可以将其复制到存储库中并进行适当的修改。这第二个修改过的文件通常会被忽略,以防止意外提交。
git rm --cached FILE
.gitignore
1条答案
按热度按时间zu0ti5jz1#
最好的方法是使用
git rm --cached FILE
从历史记录中删除该文件,然后将其添加到.gitignore
。这样,该文件将不会被跟踪,将来也不会被修改,因为它不会在存储库中。如果你的问题是如何跟踪文件并忽略对跟踪文件的更改,Git FAQ很清楚这是不可能的:
Git没有提供这样的方法。原因是如果Git需要覆盖这个文件,例如在 checkout 过程中,它不知道对文件的更改是否是宝贵的,应该保留,或者它们是否无关紧要,可以安全地销毁。因此,它必须采取安全的路线,并始终保留它们。
尝试使用git update-index的某些功能是很有诱惑力的,即assume-unchanged和skip-worktree位,但这些功能不能正常工作,也不应该以这种方式使用。
请注意,常见问题解答对配置文件的常见情况提供了建议:
如果你的目标是修改一个配置文件,那么将一个文件签入到存储库中通常会很有帮助,该文件是一个模板或一组默认值,然后可以将其复制到存储库中并进行适当的修改。这第二个修改过的文件通常会被忽略,以防止意外提交。