作者:jicanmeng
时间:2015年03月03日
git的基本命令有这么几个:
git init
命令用于建立一个新的git库。举例如下:
[jicanmeng@andy tmp]$ mkdir demo
[jicanmeng@andy tmp]$ cd demo
[jicanmeng@andy demo]$ git init
Initialized empty Git repository in /tmp/demo/.git/
[jicanmeng@andy demo]$ ls -aF
./ ../ .git/
这个隐藏的.git目录就是Git版本库(又叫仓库,repository)。Git版本库所在的目录为/tmp/demo/,它被称为工作区。
如果git的版本是1.6.5或更新的版本,可以使用一条命令来代替上面的三条命令。git init demo
就等价于mkdir demo;cd demo;git init;cd ..
这四条命令。
git add
命令用于将文件添加到暂存区(staging area). 我们在工作区中添加一个文件readme.txt, 一个名称为temp的目录,目录中包含一个a.c的文件。git add readme.txt
用于把readme.txt添加到暂存区, git add temp
用于把temp目录及目录下的所有文件添加到暂存区。git add .
用于把当前目录下面的所有文件都添加到暂存区。命令如下:
[jicanmeng@andy demo]$ echo "This is a description of the project" > readme.txt
[jicanmeng@andy demo]$ mkdir temp
[jicanmeng@andy demo]$ echo "hello,a.c" > temp/a.c
[jicanmeng@andy demo]$ git add readme.txt
[jicanmeng@andy demo]$ git add temp/a.c
git commit
用于把暂存区的内容提交到版本库,在版本库中生成一个新的提交对象。使用此命令时需要填写提交说明。
[jicanmeng@andy demo]$ git commit -m 'initial commit'
修改readme.txt,再提交一次。修改a.c的内容,再提交一次。
[jicanmeng@andy demo]$ vim readme.txt
[jicanmeng@andy demo]$ git add readme.txt
[jicanmeng@andy demo]$ git commit -m 'second commit: modify readme.txt
[jicanmeng@andy demo]$ vim temp/a.c
[jicanmeng@andy demo]$ git add temp/a.c
[jicanmeng@andy demo]$ git commit -m 'third commit: modify temp/a.c
git log
用于查看提交的历史记录。默认情况下,git log
等价于git log HEAD
。
[jicanmeng@andy demo]$ git log
commit 2a10915c2fa75ef9485f75b212d672ffe7ad0f2e
Author: jicanmeng
Date: Tue Mar 3 23:01:25 2015 +0800
third commit: modify temp/a.c
commit 5322be18f7b878078f0bb76a042cc572068889a5
Author: jicanmeng
Date: Tue Mar 3 23:00:19 2015 +0800
second commit: modify readme.txt
commit 0cdcf33f224e628ea47619214337b9cfffe5f4dc
Author: jicanmeng
Date: Tue Mar 3 22:59:23 2015 +0800
initial commit
[jicanmeng@andy demo]$
因为当前我们在master分支上,所以上面的命令也等价于git log master
。
git log
的最终参数是一个40位的commit对象的哈希值:
git log master
表示查看master分支指向的commit对象及之前的提交记录。git log HEAD
表示查看HEAD指向的分支所指向的commit对象及之前的提交记录。git log 2a10915c2fa75ef9485f75b212d672ffe7ad0f2e
表示查看2a10915c2fa75ef9485f75b212d672ffe7ad0f2e这个commit对象及之前的提交记录。
git show
命令用于查看某次提交具体修改了那些地方。例如:
[jicanmeng@andy demo]$ git show 2a10915c2fa75ef9485f75b212d672ffe7ad0f2e
commit 2a10915c2fa75ef9485f75b212d672ffe7ad0f2e
Author: jicanmeng
Date: Tue Mar 3 23:01:25 2015 +0800
third commit: modify temp/a.c
diff --git a/temp/a.c b/temp/a.c
index a6e0824..91bae4b 100644
--- a/temp/a.c
+++ b/temp/a.c
@@ -1 +1,3 @@
hello,a.c
+hello,world!
+
[jicanmeng@andy demo]$
假如某次提交的提交ID为123456, 并且这次提交修改了很多文件,但我只想查看a.c文件的修改。就用git show 123456 a.c
命令即可。
有的时候,我们在工作区修改了文件,在将文件添加到暂存区之前,我们需要确认一下自己修改的是否正确。此时就用到git diff
命令了。不带参数时,git diff
显示的是工作区和暂存区的差异。git diff --cached
或者git diff --staged
显示的是暂存区和版本库的差异。
git status
命令表示查看当前工作区和暂存区和版本库的差异。