如何在Git仓库中忽略bin和obj文件夹?

174

我希望在我的git存储库中忽略bin和obj文件夹。 我发现,在.gitignore中没有简单的方法可以做到这一点。 那么,是否有其他方法? 在Visual Studio中使用干净的解决方案?


对我来说它运行良好 - 我在我的.gitignore文件中添加了'bin'和'obj'作为单独的行。 - Tim Robinson
1
如果解决方案包含多个项目,而不仅仅是一个呢? - chester89
你能否详细说明你正在尝试什么以及哪些部分无法正常工作。在顶层的 .gitignore 文件中,将 objbin 忽略掉,这样就可以忽略所有下一级目录中名为 objbin 的文件夹。 - CB Bailey
3
我的理解是.gitignore中的内容适用于每个子目录,因此普通的“bin”和“obj”在任何地方都有效。我会在答案中发布我的.gitignore文件。 - Tim Robinson
11个回答

241

我不确定为什么这对您不起作用。如果有帮助的话,这是一个我的Visual Studio / git项目中典型的.gitignore文件:

*.suo
*.user
_ReSharper.*
bin
obj
packages

4
我也添加了“packages”,因为你可以轻松地从NuGet重新下载它们。 - Michal Ciechan
11
如果你先提交所有文件,然后再添加 .gitignore 文件并提交到版本库中,那么忽略的新文件仍然会被显示为已修改(例如重新构建项目)。 - vlad2135
12
我最近使用了在这里找到的建议性.gitignore文件:https://github.com/github/gitignore/blob/master/VisualStudio.gitignore,并取得了很好的效果。 - BigTFromAZ
1
@BigTFromAZ,你应该把这个作为答案添加进去,它比被接受的那个好多了! - Avrohom Yisroel

129

仅在.gitignore文件中添加条目可能无法忽略文件,您需要提交更改。以下是我使用的方法,对我有效:

git rm -r --cached .

git add .

然后

git commit -am "Remove ignored files"

然而,这忽略了我后来加入到存储库中的脚本文件夹。


它运行得很好。但是Vscode找不到修改后的代码。我自己做了一些更改并将其推送到原始主分支。然后它就可以工作了。 :) - Dentrax
我有一个包含许多项目的解决方案,由于某种原因,git add .从未完成。 - Chucky
1
作为一个 Git 新手,我自己搞砸了。我从来没有想过要先使用 rm 命令删除再添加回去,因为我不理解 git rm 只会从索引中删除项目而不是从磁盘中删除。所以如果我理解正确的话,你的前两个命令通过从索引中删除所有内容并将所有内容添加回来,并应用 .gitignore 过滤器来重建索引。然后提交使其在存储库中生效。非常聪明。 - BigTFromAZ
太好了!这对我来说完美地运作了。所有的.vs、obj、bin和其他被忽略的文件。 - Stanley Okpala Nwosa
很棒!对我很有用,非常感谢。 - Berk Cinaz
显示剩余2条评论

35

更新

在最近的 Visual Studio 2019 更新后,以下选项不再可用。

您可以从以下位置复制最新的 gitignore 内容。

https://raw.githubusercontent.com/github/gitignore/master/VisualStudio.gitignore

原始回答

如果您正在使用 Visual Studio,则有一种简单的方法可以完成此操作。

  1. 打开 Team Explorer
  2. 点击设置
  3. 仓库设置
  4. 在“忽略和属性文件”部分下 单击“添加”,旁边是“忽略文件”。

它将创建一个默认的 .gitignore 文件,该文件将忽略大多数常用的文件夹和文件,这些文件夹和文件将被框架/语言使用。

enter image description here


3
这正是我正在寻找的。谢谢。 - Danielle Lpz

15
如果你之前已经提交了 bin 和 obj 文件夹,把它们添加到 .gitignore 中不会自动删除它们。 你需要使用命令删除这些文件夹,例如: git rm -rf objgit rm -rf yourProject/obj 然后再提交删除操作。

9

我发现一些新的开发人员将他们的OBJ和Bin文件提交到了代码库,尽管我使用了Git ignore来排除这些文件,但在我的本地代码库中并没有生效。

以下是我解决这个问题的步骤:

  1. 从代码库中删除Bin和Obj文件夹。
  2. 同时从我的本地代码库中删除bin和obj文件夹。
  3. 创建/更新Git ignore并保存(如果尚未完成)。

如果您还有其他用户特定的文件也在代码库中,例如Visual Studio中的.suo文件,您可以在上述操作后将它们添加到Git ignore文件中。

在浪费了相当多的时间后,我找到了这个解决方法,希望能够帮助遇到同样问题的人。


9

尝试添加不想要的文件夹名称,Git 将从指定的根目录开始不再采用这些更改。对我而言,将这些文件夹名称添加到.gitignore中可行:

bin
obj
packages

7
  • 在Windows资源管理器中找到binobj文件夹
  • 右键单击TortoiseGit > 删除并添加到忽略列表 > bin
  • 右键单击TortoiseGit > 删除并添加到忽略列表 > obj

3
如果你想忽略所有项目中的bin和obj文件夹,可以使用以下方法(来自 gitignore手册页面):

从由配置变量core.excludesfile指定的文件中读取模式。

在Unix系统中,可以在配置文件~/.gitconfig中设置core.excludesfile,但我不知道在Windows下该文件位于何处。

很好的信息,但他指的是此解决方案中的所有Visual Studio项目,而不是机器上的所有项目。 - AhHatem
3
尽管他很可能永远不会有兴趣提交任何解决方案中的“bin”和“obj”文件夹。 :) - MEMark

3

@Raphael Pinel 绝对正确。如果文件已经存在于Git存储库中,则.gitignore将不起作用。

我正在使用VS2019和Azure DevOps作为我的Git存储库。以下是我的解决方法。

在Visual Studio中,添加.gitignore文件(如果需要),然后将该文件推送到存储库中。

 Team Explorer->Changes->Right Click
 .gitignore->Stage.

首先提交已暂存的代码,然后同步。 进入Azure DevOps网站。
从Git仓库中删除bin/obj文件夹。 在Visual Studio中,

Team Explorer->Changes->"Undo Changes" to those folders.
Team Explorer->Synch->Pull to update local Git repository.

现在,您可以构建项目,Git 将忽略在 .gitignore 文件中指定的文件夹。


0
在我的情况下,bin和obj文件夹嵌套在从根目录的.gitignore文件中的Project文件夹下,因此我必须像下面这样添加它:
[PROJECT_FOLDER_NAME]/bin [PROJECT_FOLDER_NAME]/obj
请用您的项目文件夹名称替换PROJECT_FOLDER_NAME。

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