我的存储库中有一个现有的Visual Studio项目.我最近在我的项目下添加了一个.gitignore文件,我假设它告诉Git忽略文件中列出的文件.
我的问题是所有这些文件都已被跟踪,据我所知,Git不会忽略在将规则添加到此文件之前已被跟踪的文件以忽略它.
有人建议使用:git rm --cached并手动取消跟踪它们,但这将永远让我一个接一个地浏览它们.
我想删除存储库并重新创建它,但这次使用.gitignore文件,但必须有更好的方法来执行此操作.
Toh*_*hid 776
这个答案解决了我的问题:
首先,提交所有挂起的更改.
然后运行以下命令:
git rm -r --cached .
Run Code Online (Sandbox Code Playgroud)
这将删除索引中的所有内容,然后运行:
git add .
Run Code Online (Sandbox Code Playgroud)
承诺:
git commit -m ".gitignore is now working"
Run Code Online (Sandbox Code Playgroud)
小智 52
创建.gitignore文件,这样做,您只需创建任何空白的.txt文件.
然后你必须改变它的名字,在cmd上写下面一行(git.txt你刚刚创建的文件的名称在哪里):
rename git.txt .gitignore
然后,您可以打开文件并编写要忽略的所有未跟踪文件.例如,我的样子如下:
```
OS junk files
[Tt]humbs.db
*.DS_Store
#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
*.pyc
*.xml
ipch/
obj/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad
#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*
#Project files
[Bb]uild/
#Subversion files
.svn
# Office Temp Files
~$*
Run Code Online (Sandbox Code Playgroud)
一旦你有了这个,你需要像任何其他文件一样将它添加到你的git存储库,只需它必须在存储库的根目录中.
然后在您的终端中,您必须写下以下行:
git config --global core.excludesfile~/.gitignore_global
来自官方文件:
您还可以创建一个全局.gitignore文件,该文件是用于忽略计算机上每个Git存储库中的文件的规则列表.例如,您可以在〜/ .gitignore_global中创建文件并为其添加一些规则.
开放式终端.在终端中运行以下命令:git config --global core.excludesfile~/.gitignore_global
如果存储库已经存在,那么您必须运行以下命令:
git rm -r --cached .
git add .
git commit -m ".gitignore is now working"
Run Code Online (Sandbox Code Playgroud)
如果步骤2不起作用,那么您应该编写要添加的文件的孔路径.
Pat*_*gle 29
作为指定在这里您可以更新索引:
git update-index --assume-unchanged /path/to/file
Run Code Online (Sandbox Code Playgroud)
通过这样做,文件将不会显示在git status或git diff.
要再次开始跟踪文件,您可以运行:
git update-index --no-assume-unchanged /path/to/file
Run Code Online (Sandbox Code Playgroud)
小智 8
如果添加.gitignore得太晚,无论如何,git都会继续跟踪已提交的文件。要解决此问题,您始终可以删除不需要的文件的所有缓存实例。
首先,要检查您实际跟踪的文件,可以运行:
git ls-tree --name-only --full-tree -r HEAD
假设您在这样的目录中找到了不需要的文件,cache/将目录而不是所有文件作为目标更安全。
所以代替:
git rm -r --cached .
定位不需要的文件或目录是比较安全的:
git rm -r --cached cache/
然后继续添加所有更改,
git add .
并提交...
git commit -m ".gitignore is now working"
参考:https : //amyetheredge.com/code/13.html