我正在开发一个maven项目,我想忽略生成并存储在我的项目(Evaluation)根文件夹的/ target文件夹中的文件。在我的git存储库的根目录中,我有一个带有以下内容的.gitignore文件条目(后端只是一个包含eclipse项目评估的文件夹)
backend/Evaluation/logs/
backend/Evaluation/target/
由于某些原因,SourceTree不会忽略存储在这两个文件夹中的文件,当我编译项目时,会有一些未提交的更改,这些更改是/ target文件夹中的一些.class文件。
为什么会这样?我还尝试将.gitignore条目更改为
/后端/评估/日志/ **
但它也没有用。
有什么想法吗?
答案 0 :(得分:124)
因为问题中有Sourcetree标记,我会回答你如何使用Sourcetree ,这非常简单。
如前所述,首先必须从跟踪中删除文件,然后让Sourcetree忽略该文件。
答案 1 :(得分:96)
我们说我们有一个无意中添加到我们的存储库的文件:
stackoverflow$ echo this file is important > junkfile
stackoverflow$ git add junkfile
stackoverflow$ git ci -m 'added a file'
在某些时候,我们意识到该文件并不重要,因此我们将其添加到.gitignore
文件中:
stackoverflow$ echo junkfile >> .gitignore
stackoverflow$ git ci -m 'ignore junkfile' .gitignore
稍后,我们对该文件进行了一些更改:
stackoverflow$ sed -i 's/ is / is not/' junkfile
当然,即使文件列在.gitignore
中,我们已经告诉git我们要跟踪它,因此git status
显示:
stackoverflow$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: junkfile
#
no changes added to commit (use "git add" and/or "git commit -a")
我们需要从存储库中删除此文件(不从我们的工作树中删除该文件)。我们可以使用--cached
标记git rm
来执行此操作:
stackoverflow$ git rm --cached junkfile
rm 'junkfile'
此阶段delete
操作...
stackoverflow$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: junkfile
#
...所以我们需要提交它:
stackoverflow$ git commit -m 'removed junkfile from repository'
[master 19f082a] removed junkfile from repository
1 file changed, 1 deletion(-)
delete mode 100644 junkfile
现在如果我们运行git status
git将忽略此文件:
stackoverflow$ git status
# On branch master
nothing to commit, working directory clean
即使它仍在我们的工作树中:
stackoverflow$ cat junkfile
this file is not important
答案 2 :(得分:11)
我在跟踪bin文件夹时遇到问题(整个文件夹)。
所以这里是快速步骤(更直观,因为我更像是一个视觉类型的人):
我希望这有助于某人。
答案 3 :(得分:11)
如果文件已经添加或提交到您的Git存储库,您必须先停止跟踪它们,然后才能被 .gitIgnore 忽略。
要停止在SourceTree中跟踪文件:
右键单击文件。选择“停止跟踪”。
(这不会删除你的文件,只是停止跟踪它们)
要停止从命令行跟踪文件:
git rm --cached example.txt
答案 4 :(得分:2)
除了上面已经提供的答案之外,还要注意如果.gitignore
文件不在根文件夹中,它将无效。
我有一个项目.gitignore
在这里/projectname/.gitignore
,因此没有被阅读。所以我把它移到/.gitignore
,一切都很好。
答案 5 :(得分:0)
这对我有用:
git update-index --assume-unchanged some.file
答案 6 :(得分:0)
为此付出了几个小时的时间,尝试了许多事情,包括此处的建议-无济于事...最终对我有用的是在位桶中设置回购协议时创建.gitignore文件。 org ,将该文件拖到本地,粘贴了我自己尝试创建的文件的完全相同的内容,现在终于可以正常工作了。