使用.git/info/exclude太晚了。

25

我通常会这样做:

git init
git add .
git commit .

然后我意识到它即将添加我的nbproject目录,而我想要排除/忽略它。有时候,我甚至会检查这个目录。如果在运行git add之前将其添加到.git/info/exclude中,一切都正常(它被排除了)。

然后我修改了.git/info/exclude文件但为时已晚。git不再尊重对.git/info/exclude的更改。

所以问题是:

  1. 如何让git接受checkin中exclude文件的更改?(我尝试再次运行git add .,但没有帮助)
  2. 假设我要排除一个已经checkin的目录(或文件),最少需要多少步骤才能达到我想要的状态(文件被排除)。
1个回答

39

如果要删除已添加但未提交的文件,请使用以下命令:

git rm --cached file.to.remove

这将从索引中删除该文件,但不会影响磁盘上的文件。

要从最近的提交中删除文件(或文件),请使用上述git rm --cached命令,然后是git commit --amend


1
“索引”是指一个暂存区,该区域将在下一次提交操作时提交到代码库中。 - Greg Hewgill
2
谢谢,这个方法有效!我把它放在这里以备自己参考:git rm -r --cached *.* - Dan Rosenstark
@Greg Hewgill,我知道这是一年前的事了,但是:git resetgit reset --mixed不会和git rm --cached *.*做同样的事情吗? - Dan Rosenstark
1
@yar:git reset将索引中的文件重置为HEAD状态;git rm --cached从索引中删除文件,不会影响工作树中的文件。区别在于,如果您随后执行git commit,则在重置后Git不会更改存储库中的文件,但在删除后,Git将从存储库中删除该文件。 - Greg Hewgill
谢谢您回答那个小问题,这解决了我的疑虑。现在我需要尝试一些东西来确保我理解得正确 :) - Dan Rosenstark
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接