git学习笔记2-一些很重要又很初级的命令和技巧(霜之小刀)
欢迎转载和引用,若有问题请联系
若有疑问,请联系
Email : lihn1011@163.com
QQ:2279557541
本文大量参考了《精通git》 第2版
1、更简洁的查看git文件的状态
大部分情况下使用git status
查看文件状态时打印的信息过于复杂,不够简洁,这是我们应该使用
git status -s
可以得到如下结果
M a.txt
MM b.txt
A c.txt
M d.txt
?? e.txt
这条命令中的
M
MM
A
M
??
是用来表示文件的状态,下面我就介绍下各个字母的含义
这些含义其实是和svn差不多的
M代表已修改
A代表已添加
?表示未跟踪
而我们看到命令中文件的状态其实是分成2列的,其中左侧表示是否已暂存,右侧表示是否已修改。这样我们列出的状态可以解释为
M //未暂存,已修改
MM //修改后暂存了,但是又修改了
A //新添加
M //修改后暂存了
?? //未添加到版本库
2、忽略我们不关心的文件
使用git的时候,有些文件的状态我们是不关心的,比如一些编译的时候生成的临时文件.a,.o之类的,一些构建目录下的文件啊,我们其实是不想提交到版本库的,但是如果每次git status -s
的时候都被列出来,我们势必很烦,这里就说说如何忽略这些文件。
在我们clone的根目录下有一个叫.gitignore的文件
下面列一堆例子
*.a #忽略所有的.a类型文件
!lib.a #任然跟踪lib.a即使上一行命令说忽略所有.a文件
/TODO #忽略当前目录的TODO文件
build/ #忽略build目录下的所有文件
doc/*.txt #忽略doc目录下的所有txt文件(不包括子目录)
doc/**/*.pdf #忽略doc目录下的所有txt文件,包括子目录
3、查看未暂存文件的同未修改时的区别
这个说起来就简单啦
直接
git diff
可以看到
diff --git a/README.md b/README.md
index d6459e0..0042c20 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-xxx
+mmmmmmmm
diff --git a/ddd b/ddd
index c5b9640..c554554 100644
--- a/ddd
+++ b/ddd
@@ -1 +1 @@
-aaa\nbbb\n
+uuuu
各种++++—-@@,要看懂其实不难,
但是。。。
没有直观的感受,让我这种鸡有些迷茫。。。
于是!我想到了图形化的对比软件!
这里就引出了下一条命令
git difftool
他就会使用图形化的软件进行对比(虽然也是在终端里),这个就要比直接git diff
貌似直观一点。不过这里还有几个缺陷,没gui得我还是用不惯,一个一个的对比我觉得太慢,不方便。。。
于是我这里隆重介绍下meld!
4、用更直观的方式查看区别–meld
首先,安装meld
brew install Caskroom/cask/xquartz
brew install pygtk
brew cask install caskroom/cask/meld
然后安装diffall工具
在https://github.com/thenigan/git-diffall
下载下来,直接运行。
然后配置git
git config --global diff.tool meld #这一行必须配置difftool对应的工具
git config –global alias.diffall git-diffall#这一行配置一条新命令 diffall
然后使用git difftool
将使用meld进行文件的一一对比。
使用git diffall
将使用meld进行所有更改的对比(好用的一逼!!!)
5、查看已暂存的文件同上一次提交的区别
这个就简单了,我们前面介绍了三种查看未暂存的区别的命令
git diff
git difftool
git diffall
那么查看已暂存的区别的命令,简单了,就是加–cached
git diff --cached
git difftool --cached
git diffall --cached
6、不使用暂存区
有些人觉得暂存区这个东东意义不大,懒得用,就直接提交就好了,这也是有办法的
就是
git commit -a -m "提交日志"
就会将所有已跟踪的文件添加到暂存区,然后直接提交
7、删除git跟踪的文件
git rm xxx.xxx
8、移动git跟踪的文件
git mv xxx.xx xxx.xx
9、查看提交历史
git log -n
这里要解释下,如果直接使用git log
时将会显示所有的历史日志
如果使用git log -3
就会显示最近的3条日志,这个就是前面说的-n的意思