git autocrlf问题

$ git config --global core.autocrlf input

https://help.github.com/articles/dealing-with-line-endings#platform-all

git用户信息

$ git config --global core.autocrlf input
$ git config --list --global

上面的--global选项会修改~/.gitconfig文件中的配置,或者现实~/.gitconfig文件中的配置。

查看git用户信息,使用命令 git config --list

[root@localhost jzcode]# git config --list
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=git@github.com:jzcode/jzcode-x11.git
branch.master.remote=origin
branch.master.merge=refs/heads/master

[root@localhost jzcode]# exit
[ny@localhost jzcode]$ git config --list
user.name=Yong Nie
user.email=nieyong_1947@126.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=git@github.com:jzcode/jzcode-x11.git
branch.master.remote=origin
branch.master.merge=refs/heads/master
[ny@localhost jzcode]$ 

在同一个目录jzcode下,根用户root和普通用户ny分别使用git config --list查看用户信息,打印出来的信息有差别。可以看到,使用普通用户ny打印出来的信息,多了两行:

user.name=Yong Nie
user.email=nieyong_1947@126.com

这是为什么呢?

在使用git链接到github之前,必须先配置好git的用户名和邮箱。否则,虽然ssh密码配对成功,也是不能够从github获取代码的。

git配置文件

查看现在git的配置结果,命令git config --list

git使用外部的diff或者merge工具

git可以配置使用外部的diff或者merge工具,例如使用p4merge工具。

git有一些默认支持的外部merge工具,在文件libexec/git-core/git-mergetool--lib文件中。

git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd  'p4merge \"$BASE\" \"$LOCAL\"

但是对不git默认支持p4merge的情况,使用

git config --global mergetool.p4merge.path "C:/Progra~1/Perfoce/p4merge.exe"

最后实验的结果,不需要配置也没有关系,在安装了p4merge之后,直接使用命令git difftool 232e 21dk就可以切换到p4merge查看。但是如果使用git diff 232e 21dk,则无论配置与否,都不能够切换到p4merge查看。

msysGit使用笔记

在Windows下使用git,然后和Linux下进行协作开发,最让我恼火的是编码的问题。下面记录在msysGit配置过程中的一些知识点。

虽然使用了日本人改进的sysGit,在Windows下完全使用utf-8进行编码,在使用git log命令时,中文还是显示为乱码(注意,不是中文显示为反斜杠加数字的问题,如果中文显示为反斜杠加数字,那是因为终端不支持中文显示)。提交到github上显示又是OK的,这是问什么呢?

原来,git log是使用的LESS输出log信息的,而Windows下的bash只能够输出gbk格式的中文。这就说明,在git中,log信息是使用utf-8存放的,需要使用git log命令输出到bash终端,需要将log信息由utf-8编码转化为gbk编码。在gitconfig文件中加入:

[i18n]
	logoutputencoding = gbk

测试一下,确实中文就能够正常输出。但是,使用git diff命令,还是有着个问题。