.gitignore忽略跟踪指定文件

背景

今天在.gitignore忽略跟踪文件的时候,发现更改.gitignore的内容,再git status还是能看到希望被忽略的文件。这是因为在staged区,这个文件已经被tracked了,所以要将此文件取消tracked,就应该使用这样的命令:

git rm --cached <filename> 
gid add .

git rm --cached是将该文件从暂存区里移除,然后git add .尝试跟踪所有文件时,会因为gitignore里记录了该文件而不跟踪这个文件。

官方文档

官方的文档里,第一句话就说得很清楚:

A gitignore file specifies intentionally untracked files that Git should ignore. Files already tracked by Git are not affected; see the NOTES below for details.

有关gitignore的在官方地址是这个。
快速了解git管理的三个区域可以看这个地址,看完这篇文章后,你会知道下面这些指令的区别:

git diff --cached,git diff,git diff HEAD,git diff -staged,
working tree/index(staged)/repository(HEAD,commit)
git diff : index and commit
git diff HEAD : working tree and HEAD
git diff --cached(--staged) : working tree and index 

当你想知道跟踪了哪些文件时,可以用这个指令:

git ls-files

其实没有必要去记这些指令,当你想要用git做什么事的时候再去查文档就可以了,用几次就会了。一般来说我们日常只用git clone / git push /git add . / git commit/git pull这几个指令就够了。

总结

不过呢我也是发现,使用VS的友好界面会让人远离本质,比如说VS里有这样的功能:git stash
你点击之后就会储存这些更改,后续你pull还是push都和这个无关了。当你弹出的时候,又可以将这些更改和更新后的仓库merge一下。这里的Apply就是应用,Pop就是弹出;其实执行的命令就是git stash apply,git stash pop。

最好还是用命令行,这样更接近本质,而且也不至于换一个IDE就不会用了。IDE为我们做的事情太多,比如说VS在运行的时候有一个启动按钮,点击就build and run了。这里拿dotnet程序举例哈,实际上是运行了dotnet run指令。生成按钮就是dotnet build。新建解决方案就是dotnet new sln,新建项目就是dotnet create new console,将项目引入进解决方案就是 dotnet sln add <ProjectName>.csproj。所以为了弄清本质最好还是使用命令行吧,当然了,调试这种事还是IDE更方便点。
git_Stash_PopAndApply