通过.gitignore设置Git忽略所有obj和bin目录下的文件(含一些异常情况的处理)

-- 通过.gitignore设置Git忽略所有obj和bin目录下的文件(含设置无效时的特殊处理)
【官网】:https://git-scm.com/

应用场景

通过git管理代码版本时,经常需要忽略一些文件或目录,比如一些bin,obj这些调试目录。

基础资源

git工具

使用须知

需要梳理好项目下哪些文件或目录是可以忽略的(一般是所有开发者下载后都能本地编译生成的内容). 否则将影响团队开发协作(少了一些必要文件时)

配置步骤

【A.为什么要忽略某些文件?

1)避免一些涉及本机环境的配置被提交。

2)避免编译输出的临时文件提交后,团队别的开发者更新到本地,提示一堆冲突问题。

3)避免大量编译的临时文件被认为是版本更新,进而造成网络开销增大,增加了版本呢提交的时间成本,降低了提交版本的效率。

【B.git中如何忽略指定目录或文件?】

Git里的忽略文件功能可以通过一个.gitignore文件来实现,可以直接手工新建该文件,文件内容如下:



## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the

[注]参考自官方推荐: https://github.com/github/gitignore/blob/master/VisualStudio.gitignore


【C.设置上述.gitignore文件后依然不起作用,怎么办?】

一般来说,.gitignore文件只对尚未加入到git版本控制的目录或文件起作用。 对于已经加入git版本的情况我们可以进行如下操作(以.net解决方案为例,其它语言根据情况修改通配符):


step1)清理待忽略的文件:运行如下批处理文件实现清理编译输出的临时目录和文件.



@echo off
set nowPath=%cd%
cd /
cd %nowPath%

::delete specify file(*.pdb,*.vshost.*)
for /r %nowPath% %%i in (*.pdb,*.vshost.*,*.log) do (del %%i)

::delete specify folder(obj,bin)
for /r %nowPath% %%i in (obj,bin) do (IF EXIST %%i RD /s /q %%i)

echo OK
pause

注:
1、批处理中两个半角冒号开头表示注释掉这一行
2、将以上代码复制到记事本中,并且命名为bat后缀的文件,如 ClearDebug.bat.
3、ClearDebug.bat最好放到要执行删除操作的目录(或上层目录)

如果只要删除某个文件,可以将for /r %nowPath% %%i in (obj,bin) do (IF EXIST %%i RD /s /q %%i) 这一句去掉,然后将for /r %nowPath% %%i in (*.pdb,*.vshost.*) do (del %%i) 这一句中的(*.pdb,*.vshost.*)改成要删除的文件。



step2)提交删除操作到版本管理


step3)增加上述指定的.gitignore文件(已存在则忽略此步).


step4)编译之后,再次提交(可以验证忽略的效果).




常见问题

快速入门

参考资料