Git忽略文件(.ignore)以及git status,git diff,git rm命令

git相关的其他命令

在之前的两篇文章中简单介绍了与git相关的基础知识,如果想要熟练和快速运用git,还需要熟悉git的其他相关的命令。这一篇文章就是关于git的一些常用的“其它命令”


忽略文件

如果有不想要某些文件被纳入git的管理,可以在git中忽略掉这些文件。这时,我们需要创建一个名为.gitignore的文件,在这个文件中写入想要忽略的文件或文件类型。下面列出文件.gitignore的格式规范:

  • 所有空行或者以#开头的行都会被Git忽略,相当于是注释
  • 可以使用shell所使用的简化了的正则表达式
  • 匹配模式可以以(/)开头防止递归。
  • 匹配模式可以以(/)结尾指定目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

我们可以进行一个例子进行具体的展示,首先在之前的目录的基础上添加Text4.txt和Text5.txt以及Pictures和Videos文件夹,同时添加一个.gitignore文件

同时在Pictures文件夹中添加test文件夹和Test6.docx和Text7.txt。test文件夹中含有Test7.docx

这时可以查看状态,可以看见:

所有新添加的文件都处于untracked的状态,这时在.gitignore文件中添加如下:

# ignore all files in the Videos/ directory
# 忽视所有Videos文件夹中的文件
Videos/

# ignore .txt files(Regular Express)
# 忽视当前目录下txt文件(正则表达式)
*.txt 

#ignore all txt files in Pictures directory,but not in Pictures/test directory
#忽视所有在Pictures目录下的以txt为后缀的文件,但是不忽略Pictures/test下的
Pictures/*.txt

# ignore all docx files in Pictures directory,including Pictures/test
#忽视包含Pictures/test和Pictures/目录下的所有以docx为后缀的文件
Pictures/**/*.docx

这时再查看当前文件的状态,会发现所有被配置的文件都已经被忽略了。

注意:这里的文件都是处于未跟踪状态的文件,如果某个文件在暂存区或者仓库区则在.gitignore文件中配置忽略无效
如果要忽略指定模式以外的文件或目录,需要使用"!",在gitignore文件中添加以下内容:

#track Test4.txt,even though you're ignoring .txt files above
#这里忽视了除Test4.txt文件以外txt文件,即使在上面定义了忽视.txt文件
!Test4.txt

还有一个需要注意的是如果当前目录的子目录中有同名的文件(包含后缀名)在此文件夹中写文件名,这时会递归地将子目录中的同名文件给忽视,如果不想忽视子目录中的文件则需要加上"/"。在当前目录中和Files目录下分别添加Test6.md后,在.gitignore文件中添加如下内容:

#Only ignore Test6.md in the current directory,not subdir/Test6.md
#只是忽略当前目录下的Test6.md而不是子目录中Test6.md
/Test6.md

GitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表,你可以在 https://github.com/github/gitignore 找到它.

状态简览

通常git status命令的输出很详细,如果想要得到更加简单的形式的输出,则需要使用命令git status -s
在当前文件夹中将Test4.txt和.gitignore文件使用git add添加到暂存区中,然后再在Test4.txt中添加内容,同时再向已经处于仓库区中的Test1.md添加新内容,使用git status -s可以看到:

这时如果再使用git add将Test1.md和Test4.txt添加到暂存区,则显示:

可以看出M的位置出现在了两处,总结一下,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左 边的 M 表示该文件被修改了并放入了暂存区,新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记。

详细查看修改的内容

使用git status可以查看到文件变化的地方,但是过于模糊,如果想要知道具体修改了什么地方,可以使用git diff的命令

  1. 查看已暂存和未暂存的修改,首先将所有文件添加到暂存区。

这个时候运行git diff命令可以看见没有任何输出,因为所有文件已暂存。
当在Test1.md文件新添加一行后,再使用git diff的命令:

因此要明白git diff比较的是已暂存和未暂存文件之间的区别。

  1. 查看已暂存的将要添加到下次提交里的内容,依然是将所有文件添加到暂存区

这时运行git diff --cached或者git diff --staged命令,会出现所有你已暂存起来的修改

因此git diff --cached或者git diff --staged命令便是查看已暂存的将要添加到下次提交里的内容

提交更新---将提交信息与命令放在同一行

可以在git commit命令之后添加 -m选项,这样就可以将提交信息与命令放在同一行了.

可以所有更新的信息都会输出

跳过使用暂存区域

每次提交之前都要使用git add将文件提交到暂存区,这样略显繁琐,如果提交已经被git跟踪过的文件,可以跳过将此文件添加到暂存区的步骤,如下提修改已经在仓库区的Test4.txt,使用git commit -a命令可以直接提交Test4.txt到仓库区。

移除文件

如果当要简单删除目录中的文件时,可以手工在文件夹中删除,也可以运行rm命令,比如:

rm Files/Test6.md

其状态为:

此时可以看出这次的删除操作并没有记录到git中,因此可以运行git rm命令

下次提交时候这个文件便不会再纳入git的版本管理之中了。

如果一个文件已经存在于仓库中,这时运行git rm会在文件中直接删除该文件并不会被纳入git的管理中

但是如果一个文件在暂存区中,想要删除则需要用强制删除选项-f。不适用会报错(这也是一种安全特性)比如下面的例子,Test4.txt已经在暂存区中

如果使用git rm -f则会强制删除文件,如果使用git rm --cached则会在目录中保留此文件,但是并不会让git继续跟踪。

移动文件和重命名文件

如果要移动文件则直接使用rm命令,但是如果使用了git mv则结果会很不一样,运行git mv readme.md readme相当于运行了三条命令:

mv readme.md readme
git rm readme.md
git add readme

比如下面的例子:运行git mv Test4.txt Test7.md结果状态为:

因此,git rm命令将文件或文件夹重命名的文件,上面的例子就是将Test4.txt改名成了Test7.md

原文地址:https://www.cnblogs.com/haoocker/p/12269902.html

时间: 2024-10-12 20:39:27

Git忽略文件(.ignore)以及git status,git diff,git rm命令的相关文章

git之忽略文件(ignore file)

当使用git管理源代码时,编译时会产生大量的临时文件,对于这些临时文件,我们不希望提交到代码库.默认情况下,git会管理这些临时文件,把它们当成是一种变化,这样就需要我们自己去挑选出真正要提交的文件,给我们带来了不便. 其实我们可以通过.gitignore文件来控制git对repository下的文件变更管理.   gitignore文件的格式 文件 .gitignore 的格式规范如下: 所有空行或者以注释符号 # 开头的行都会被 Git 忽略. 可以使用标准的 glob 模式匹配. 匹配模式

git忽略文件【转】

转自: http://cwind.iteye.com/blog/1666646 有很多文件不必使用git管理.例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等.使用git status时,会在Untracked files里面看到这些文件列表,在一次需要添加的文件比较多时(使用git add . / git add -u),会把这些所有的未跟踪文件添加进索引. ============一些牢骚============ 于是自然想要告诉git把这些文件忽略,我们当然会想

eclipse设置git忽略文件

使用eclipse开发的程序员们经常会接触版本控制软件,这里只要说下eclipse使用egit的情况下设置忽略文件. 特此说明在这里使用window->team->ignored对于git来说是不起效果的,它对svn有效果,好了不说废话了. 直接选择:windows->show view->Navigator 直接在最左侧选择要忽略的文件->右键->team->ignore 保存即可 常用git忽略文件: /bin//.project/.gitignore/.cl

git 忽略文件

解决方案: 1. 本地仓库忽略 本地仓库的文件忽略规则可以在.git/info/exclude文件中添加.这些忽略的文件不会提交到共享库中,因而不会被协作者所共享. 2. 当前工作目录添加文件忽略 对于每一级工作目录,创建一个.gitignore文件,向该文件中添加要忽略的文件或目录.但在创建并编辑这个文件之前,一定要保证要忽略的文件没有添加到git索引中.使用命令git rm --cached filename将要忽略的文件从索引中删除. --摘抄.gitignore的格式规范 • 所有空行或

git忽略文件和目录

******************************************************** http://jingxuan.io/progit/2-Git%E5%9F%BA%E7%A1%80.html 忽略某些文件 一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表.通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等.我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式.来看一个实际的例子: $ cat

git 忽略文件的三种方式

1. 在项目目录下新建.gitignore文件并添加规则 特点:此种方式的忽略规则只局限于本项目目录及其子目录,并且.gitignore文件会被提交到远程仓库进行共享忽略规则. 2. 在.git/info/exclude中添加忽略规则 特点:忽略规则局限于本项目目录及其子目录,规则只存在本地不会被提交和共享. 3. 设置全局忽略文件 git config --global core.excludesfile ~/.gitignore 特点:忽略规则将作用于全局所有的项目,并且规则不会被存储到远程

git 忽略文件的俩种方法及区别

在本地git的仓库中,如果需要忽略文件被add,有俩种很好用的方法. 第一种,在git仓库的根目录下添加.gitignore文件,在.gitignore文件中添加自己需要避免添加的文件或者文件夹路径. 规则如下: # 此为注释 – 将被 Git 忽略 *.a # 忽略所有 .a 结尾的文件 !lib.a # 但 lib.a 除外 /TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO build/ # 忽略 build/ 目录下的所有文件 doc/*.txt #

添加git忽略文件

把之前的文件添加作为忽略文件 先把本地缓存删除(改变成未track状态),然后再提交git rm -r --cached .git add .git commit -m 'commit log info'

git忽略文件权限的检查

在linux上配置了一个samba服务器,方便在linux上通过ide修改代码,然后发现一个很烦人的问题,就是没有修改权限,在使用命令 chmod 777 filename后可以修改了,然而使用git status 就会发现文件路径下出现了修改,使用git diff命令查看显示如下 old mode 100644 new mode 10755 因此想到屏蔽git对于文件权限的检查,使用如下命令即可完成 git config core.fileMode false 如果想要修改回来,只需要设置 g