① 如何创建.gitignore文件,忽略git不必要提交的文件
在Git的使用过程中,有很多文件是不需要被提交到版本管理的,比如mac的朋友都知道.DS_Store 文件在每个文件夹中都会出现,但是这个文件对代码同步来说并没有什么作用,所以我们需要把这个文件排除在b岸本管理之外,这个时候就需要我们问答的 gitignore文件来搞定了。
首先声明我的使用环境为mac,所以windows使用起来有更简单的方法,或者有些命令windows不能使用
默认情况之下gitignore文件是不存在的,我们需要把这个文件新建一下,在终端中你首先cd到你的工程目录下,然后输入命令
touch .gitignore 1
这样你就可以在文件中新增一个.gitignore隐藏文件。
可以使用
ls -all 或者linux下使用 ll1
进行查看,之后对文件进行编辑
vi .gitignore 1
在vi中使用 i 命令对文件进行编辑,然后点击esc 使用 :wq命令进行保存
1、配置语法:
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
2、示例:
(1)规则:fd1/*
说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;
(2)规则:/fd1/*
说明:忽略根目录下的 /fd1/ 目录的全部内容;
(3)规则:
/*
!.gitignore
!/fw/bin/
!/fw/sf/
说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;
例如我配置的是
launchConfigurations/
.DS_Store
test.txt123
之后提交到远端就可以了
但是如果你需要忽略的文件意境存在在远端中了,那么你需要将远端中的文件删除掉才可以:
使用git rm --cached .DS_Store进行删除
git rm –cached 把文件.DS_Store从git的索引库中移除,但是对文件.DS_Store本身并不进行任何操作也就是说本地还是有.DS_Store文件的,但是远端却没有了
之后再使用git commit /push 之后提交上去
这样就不会再用担心这个文件的冲突了
② 文件移除 git 版本库但不删除文件
执行以下命令
git rm -r .gitignore --cached
再次提交下
git commit -m '删除过滤文件'
git status
过滤规则生效
git push
.gitignore忽略已加入版本控制的文件
问题:.gitignore中已经标明忽略的文件目录下的文件,在git push的时候还会出现在push的目录中。
原因:在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中搏举,就算是在.gitignore中已经声明了忽略路径也是不起作用的
解决:这时候我们就应该先把本地缓存删除,然后再进行git的push,这样就不会出现基丛碧忽略的文件了。git清郑喊除本地缓存命令如下:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
③ git上怎么把commit的代码撤销
【注意】楼上的描述不到位,--hard是回退commit和add操作,并将文件删除掉。
git reset --soft commit_id
此命令可以回退掉commit 操作,不会删除文件。
git reset --mixed commit_id
此命令可以回退掉commit 操作和add操作,不会删除文件。