我的仓库里有一个现有的Visual Studio项目。我最近在我的项目下添加了一个.gitignore文件,我想这是告诉Git忽略该文件中列出的文件。
我的问题是,所有这些文件都已经被追踪了,据我所知,Git不会忽略一个在这个文件中添加规则之前已经被追踪的文件。
有人建议使用。`git rm --cached',然后手动取消追踪,但这将花费我很长时间去逐一检查它们。
我想过删除版本库,然后重新创建,但这次要有.gitignore文件,但一定有更好的方法来做。
创建一个.gitignore文件,所以要做到这一点,你只需要创建任何空白的.txt文件。
然后你必须在 cmd 上写下以下一行来改变它的名字(其中 git.txt
是你刚刚创建的文件名)。
操作系统垃圾文件
[Tt]humbs.db
*.DS_Store
#Visual Studio文件
*. [Oo]bj
*.用户
*.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]在
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad
#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*
#项目文件
[Bb]ild/
#Subversion文件
.svn
# 办公室临时文件
~$*
GitHub有一个[有用的.gitignore文件全集][1] 。
4.
一旦你有了这个,你需要像其他文件一样把它添加到你的git仓库中,只是它必须在仓库的根目录下。
5.
然后在你的终端中,你必须写下以下一行。
git config --global core.excludesfile ~/.gitignore_global
摘自官方文档。
>
你也可以创建一个全局的.gitignore文件,它是一个规则列表
>.用于忽略电脑上每个 Git 仓库中的文件。
用于忽略计算机上每个 Git 仓库中的文件。
对于
>.Gitignore_global
例如,你可以在 ~/.gitignore_global 创建文件,并在其中添加一些
>规则来。
>的规则。
>。
打开终端。
在你的终端上运行以下命令。
git config
&gt.--global core.excludesfile ~/.gitignore_global
--global core.excludesfile ~/.gitignore_global
如果respository已经存在,那么你必须运行这些命令。
git rm -r -缓存。
git add .
git commit -m ".gitignore is now working"
如果第2步没有工作,那么你应该写下你想添加的文件的路径。
[1]:
[1]: https://github.com/github/gitignore
按照规定这里你可以更新索引。
git update-index --assume-unchanged /path/to/file
这样做,这些文件就不会出现在 "git status "或 "git diff "中。
要重新开始追踪这些文件,你可以运行。
git update-index --no-assume-unchanged /path/to/file
如果你太晚添加了.gitignore
,git会继续跟踪已经提交的文件,而不管。
要解决这个问题,你可以随时删除所有不需要的文件的缓存实例。
首先,为了检查你实际跟踪的是什么文件,你可以运行。
git ls-tree --name-only --full-tree --r HEAD
。
比方说,你在一个像cache/
这样的目录中发现了不需要的文件,所以,针对这个目录而不是你所有的文件更安全。
所以,与其这样
"git rm -r -缓存."。
更安全的做法是以不想要的文件或目录为目标,而不是:git rm -r --cached .
。
git rm -r --cached cache/
。
然后继续添加所有变化。
git add .
然后提交...
git commit -m ".gitignore is now working"
。
这里是一种 "取消追踪 "任何文件的方法,否则这些文件将在当前的排除模式下被忽略。
(GIT_INDEX_FILE=some-non-existent-file \
git ls-files --exclude-standard --others --directory --ignored -z) |
xargs -0 git rm --cached -r --ignore-unmatch --
这将使这些文件留在工作目录中,但从索引中删除它们。
这里使用的技巧是向git ls-files提供一个不存在的索引文件,这样它就认为没有跟踪的文件。上面的shell代码询问了所有在索引为空的情况下会被忽略的文件,然后用git rm将它们从实际索引中删除。
在文件被 "解除追踪 "后,用git status来验证是否有重要的文件被删除(如果有的话,调整你的排除模式,用git reset -- path来恢复被删除的索引条目)。然后做一个新的提交,把这些 "垃圾 "去掉。
渣滓 "仍然会出现在任何旧的提交中。如果您真的需要一个干净的历史,您可以使用 git filter-branch 来生成旧提交的干净版本(注:使用 git filter-branch 会 "重写历史",所以如果您有任何合作者在 "crud "首次出现后拉了任何历史提交,就不应该轻易使用)。
我认为这是一个简单的方法,可以将.gitignore文件添加到现有的版本库中。
先决条件.你需要浏览器访问你的github账户。
你需要一个浏览器来访问你的github账户。
步骤
提交修改。
现在克隆这个版本库。
玩得开心点