我在.gitignore中添加了以下一行:
sites/default/settings.php
但是当我输入git状态时,它显示文件为unstaging文件。
有什么问题吗?所有其他模式都很好。
我在.gitignore中添加了以下一行:
sites/default/settings.php
但是当我输入git状态时,它显示文件为unstaging文件。
有什么问题吗?所有其他模式都很好。
当前回答
我所做的是成功忽略settings.php文件:
Git rm—cached sites/default/settings.php 提交(到此为止没有工作) 手动删除sites/default/settings.php(这是有效的) Git添加。 提交(成功忽略)
我认为如果Git上有提交文件,那么忽略就不能正常工作。只需删除文件并提交。之后它会忽略。
其他回答
我刚刚尝试了git 1.7.3.1,并给出了这样的结构:
repo/.git/
repo/.gitignore
repo/sites/default/settings.php
其中repo因此是上面提到的“根”(我将它称为你的工作树的根),而.gitignore只包含sites/default/settings.php,忽略为我工作(无论.gitignore是否被添加到repo)。这与你的回购布局匹配吗?如果不是,有什么不同?
我遇到了这个问题,这是一个老问题了,但是我想要跟踪那个文件但不是在某些工作副本上跟踪它,你可以这样做
git update-index --assume-unchanged sites/default/settings.php
有一些实例,例如应用程序配置文件,我想在git中跟踪(因此.gitignore将不起作用),但我需要更改本地设置。我不希望git管理这些文件或将其显示为修改。要做到这一点,我使用skip-worktree:
git update-index --skip-worktree path/to/file
您可以通过列出文件并检查以S开头的行是否被跳过来确认文件被跳过
git ls-files -v | grep ^S
如果将来你想让git再次在本地管理文件,只需运行:
git update-index --no-skip-worktree path/to/file
上面的麦斯卡利托给出了一个很好的答案,引导我走上了正确的道路,但是
Git update-index——assume-unchanged file/to/ignore.php
与git有一个合同,其中:用户承诺不更改文件,并允许git假设工作树文件与索引中记录的文件匹配。
然而,我改变了文件的内容,所以在我的例子中——skip-worktree是更好的选择。
Toshiharu Nishina的网站提供了一个关于skip-worktree和假设不变的很好的解释:忽略已经在Git本地管理的文件
我所做的是成功忽略settings.php文件:
Git rm—cached sites/default/settings.php 提交(到此为止没有工作) 手动删除sites/default/settings.php(这是有效的) Git添加。 提交(成功忽略)
我认为如果Git上有提交文件,那么忽略就不能正常工作。只需删除文件并提交。之后它会忽略。
请使用此命令
git rm -rf --cached .
git add .
有时.gitignore文件即使是正确的也不能工作。Git忽略文件的原因是它们没有被添加到存储库中。如果您之前添加了一个想要忽略的文件,Git将跟踪它,并且将跳过任何跳过的匹配规则。Git这样做是因为该文件已经是存储库的一部分。