git使用小结

1. git-config

配置git,一般需要配置的是user.name,user.email,有时sendemail.smtpserver也要配置,比如,我使用msmtp:

git-config —global sendemail.smtpserver /usr/local/bin/msmtp

如果你仅仅是想给这一个项目配置,把—global选项去掉。查看配置的选项是—list。

  1. git-pull

git-pull没必要带后面那长长的url(-_-b 我那么用了好多次,不过我用的是!git-pull)。如果你在给Linux内核这样的项目工作,记得git-pull之前检查是不是在master分支。

3. git-format-patch

如果发送多于一个补丁,最好用[PATCH n/m]的形式,加上-n。加signed-off-by那行是-s。指定为几次commit生成补丁,直接加数字,比如,

$ git-format-patch -3

检查补丁是—check,最好加上这个。

4. git-send-email

如果一次提交补丁比较多,最好用—no-chain-reply-to,因为如果不用的话,在thread嵌套会太深,不利于别人阅读。这个也可以通过选项sendemail.chainreplyto来控制。—signed-off-by-cc,要加上,可以省去手工处理的麻烦。—compose用来编辑[PATCH 0/m],这个一般是对整个patchset的描述。—smtp-server,如果你不想用git-config指定的话,用它也行。—cc和—to就不用说了。

5. git-commit

在git-commit之前最好git-add。git-commit几个常用的选项有:-s 会增加Signed-off-by行,-e编辑commit message,-a表示all,-m是指定commit信息。同样,删除文件是先git-rm。查看commit列表用git-rev-list,查看某个commit用git-show,查看commit的日志用git-log,-p是以补丁的形式查看。

6. 其它

git-diff也可以比较不同版本之间的差异,某个版本的某个文件的差异,如:

$ git-diff v2.6.22
$ git diff v2.6.20 init/main.c
$ git-diff v2.6.23 v2.6.24-rc1 init/main.c

git-whatchanged也差不多:

$ git-whatchanged -p init/main.c

7.错误提交了commit怎么办?

a) git-revert

这个本身就会产生一个commit,如果用得多了会让你的log看起来不那么干净。;-)

b) git-reset

用这个要当心,它会把那个commit之后的commit全部删除。一个好的办法是:先建立一个临时的分支,然后再git-reset,再git-rebase,最后再删除临时的分支。 详细可以看这里