11. git的一些命令

作者:jicanmeng

时间:2014年08月30日


获取git版本库的工作区的根目录

使用git rev-parse --git-dir命令来获取工作区的根目录(也就是.git目录所在的目录):

[jicanmeng@andy programming]$ git rev-parse --git-dir
				/home/jicanmeng/Desktop/virtualbox/windowsXP-cygwin/myBlog2/.git
            [jicanmeng@andy programming]$ pwd
				/home/jicanmeng/Desktop/virtualbox/windowsXP-cygwin/myBlog2/programming
            [jicanmeng@andy programming]$ 

去除多余的^M字符

如果我们在windows环境下编辑一个文件,在linux环境下将这个文件添加到git库中,有可能会出现下面这样的情况:

windows_end_of_line
图11-1 windows环境下编辑,在linux环境下查看

可以看到,在每一行的末尾都有一个^M字符。这是因为在windows环境下编辑文件时每一行的换行符都是0x0D,0x0A,在linux环境下编辑文件时每一行的换行符都是0x0A。将windows环境下的文件放到linux环境下打开,就会出现上面的字样。同样的,将linux环境下的文件放到windows环境下打开,可能会出现没有换行的情况。文件中有这个^M也没什么影响,只是看着有点儿不爽。

我们在使用git时遇到这种情况,可以有如下的方法来应对:

  1. 对git进行配置,忽略^M字符;
  2. 修改文件内容,删除^M字符;

对于第一种方法,使用下面的命令即可:

[jicanmeng@andy programming]$ git config --global core.whitespace cr-at-eol
            [jicanmeng@andy programming]$ 

对于第二种方法,可以使用notepad++打开文件,选择"编辑"->"档案格式转换"->"转换为UNIX格式"即可。但对于多个文件的转换来说,就比较慢了,可以使用sed来更快地完成这项工作:

linux_end_of_line
图11-2 使用sed来完成格式转换

这里需要注意的一点是:在sed命令时输入^M字符时不是先输入^再输入M,而是先输入Ctrl+v,再输入Ctrl+M。

参考资料

  1. git权威指南: http://www.worldhello.net/gotgit/
  2. Git diff ^M的消除: http://blog.csdn.net/csfreebird/article/details/10448493
  3. git-diff to ignore ^M: http://stackoverflow.com/questions/1889559/git-diff-to-ignore-m
  4. Windows & Linux 文件格式之迷: http://blog.csdn.net/zhangguangyi888/article/details/8159601