git 把文件从 版本管理中移除 andorid版本

刚学git时,一股脑吧全部文件所有加到版本管理中,
如今作Android开发,这样作就有很大的问题了,
gen  和bin  文件夹下的文件是编译生成的,最好不要加到版本管理中,最好加入到.gitignore文件中(这两个文件夹要留,只是把文件夹下的文件移除版本管理库)
但是,我已经加入到了版本管理中,怎么办?
通常来讲,使用“git rm”命令

// 下面就以删除bin文件夹为例子,删除gen等文件,也是同样的道理,以此类推
1.刚开始 使用的是 git rm -r -n */gengen”)
参数解释:-r  递归移除目录,(Allow recursive removal when a leading directory name is given.)
   -n:加上这个参数,执行命令时,是不会删除任何文件,而是展现此命令要删除的文件列表预览,因此通常用这个参数先看看要删除哪些文件,防止误删,确认以后,就去掉此参数,真正的删除文件。  (Don't actually remove any file(s). Instead, just show if they exist in the index and would otherwise be
           removed by the command.)

可是上面的命令真正会删除文件,我以为,我须要的只是从版本管理库中删除,再也不跟踪此文件,而硬盘上的这个文件仍是要的,因此,上面的命令还要增长参数来实现此目的。

引用:

\******************开始***************\

 咱们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希 望保留在当前工做目录中。换句话说,仅是从跟踪清单中删除。好比一些大型日志文件或者 一堆 .a 编译文件,不当心归入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 --cached 选项便可:

\******************结束***************\
 
2.按照上面的引用,我修改的命令以下:
 git rm  -r -n --cached   */bin
 git rm *~  (只删除当前目录下以“
~”结尾的文件)
注意到星号 * 以前的反斜杠 \,由于 Git 有它本身的文件模式扩展匹配方式,因此咱们 不用 shell 来帮忙展开(译注:实际上不加反斜杠也能够运行,只不过按照 shell 扩展的 话,仅仅删除指定目录下的文件而不会递归匹配。上面的例子原本就指定了目录,因此效果 等同,但下面的例子就会用递归方式匹配,因此必须加反斜杠。)。此命令删除全部 log/ 目录下扩展名为 .log 的文件。相似的好比:
 git rm \*~ (会递归的删除当前目录 以及 子目录下的
以“~”结尾的文件
会递归删除当前目录及其子目录中全部 ~ 结尾的文件。


因此我最后的命令是

git rm  -r -n --cached   */bin/\*  (注意:此命令会真正删除文件,你能够加上"-n"参数 查看文件列表)

3.删除gen文件夹 只要把上面的“bin”改成“gen”便可
4.把这俩文件夹移除版本管理,可是
 有问题了,就是
在你执行 “git status”查看当前状态,会发现 gen和bin文件夹下的文件会出现,提示没有在版本管理里面
这就很烦人,咱们既想把gen和bin移除版本管理库,
可是这样的提示,会耽误咱们的“git add”命令,也会干扰咱们使用“git status”的
结果列表
咱们想忽略这俩文件夹,

我参考了下面的链接
http://stackoverflow.com/questions/3325736/eclipse-android-and-gitignore

咱们能够在与 “.git”文件夹同级目录下 创建“.gitignore”文件,就是这俩文件在同一个目录下
“.gitignore”文件里面的内容就是  咱们要忽略的文件,这些文件即便不在版本管理库,也不会提示的
文件内容以下:

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Eclipse project files
#.classpath
#.project

# Proguard folder generated by Eclipse
proguard/

# Intellij project files
*.iml
*.ipr
*.iws
.idea/


上面这些文件就被忽略。
原文是删除了“.classpath”和“.project”,我不建议这样作,这两个文件仍是留在版本管理库,不然,你把项目导出到别的地方,再导入时就会有问题。

记得

参考以下:

\******************开始***************\
 
通常咱们总会有些文件无需归入 Git 的管理,也不但愿它们总出如今未跟踪文件列表。 一般都是些自动生成的文件,像是日志或者编译过程当中建立的等等。咱们能够建立一个名为 .gitignore 的文件,列出要忽略的文件模式,来看一个简单的例子:

$ cat .gitignore *.[oa]
*~

第一行告诉 Git 忽略全部以 .o 或 .a 结尾的文件。通常这类对象文件和存档文件都是 编译过程当中出现的,咱们用不着跟踪它们的版本。第二行告诉 Git 忽略全部以波浪符(~) 结尾的文件,许多文本编辑软件(好比 Emacs)都用这样的文件名保存副本。此外,你可能 还须要忽略 log,tmp 或者 pid 目录,以及自动生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以避免未来误提交这类无用的文件。
文件 .gitignore 的格式规范以下:
• 全部空行或者以注释符号 # 开头的行都会被 Git 忽略。
• 可使用标准的 glob 模式匹配。
• 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
• 要忽略指定模式之外的文件或目录,能够在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任 意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一 个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;若是在方括号中使用短划线分 隔两个字符,表示全部在这两个字符范围内的均可以匹配(好比 [0-9] 表示匹配全部 0 到 9 的数字)。
咱们再看一个 .gitignore 文件的例子:

# 此为注释 – 将被 Git 忽略
*.a # 忽略全部 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO build/ # 忽略 build/ 目录下的全部文件
doc

\******************结束***************\

若是作完上面的设置后,出现编译错误,课按照下面的方法解决

With regards to the error, I would clean the project and/or try to run the Fix Project Properties utility (right-click on the Project -> Android Tools -> Fix Project Properties).


这里推荐一个学习git 的入门帖子:写的还不错
http://www.nshen.net/sitelog/2011/08/03/git-note.html
html

相关文章
相关标签/搜索