介绍

安装
源码编译安装
| 1 |  | 
| 1 |  | 
package manager
debian
| 1 |  | 
GUI客户端
git客户端众多,可以根据需要选择安装。以下主要介绍两个,一个是windows资源管理器模式使用的,一个是Eclipse开发使用的。
- windows客户端
先安装Git for Windows(下载戳此处)。
再安装tortoisegit(下载戳此处)。
注意:避免Windows和Unix换行符不同而引起比对差异问题(详见GitHub 第一坑:换行符自动转换),建议安装Git for Windows过程中,选择Checkout-as-is, commit as-is,参见下图:

也可以后面通过TortoiseGit的settings中设置,参见下图:

命令行下修改,参见如下:
| 1 |  | 
且统一换行符为Unix换行符,参见实践Eclipse
安装完成后把Git for Windows的git加入到环境变量path中,命令行验证git安装是否成功。
| 1 |  | 
- 
    Eclispe某些版本一般自带有git插件(EGit),避免麻烦,建议直接选择集成EGit的Eclipse 
- 
    其他客户端可选,比如SourceTree,更多可以参考Git图形化界面客户端大汇总 
备注:git项目访问url一般有两种,ssh和http,如果选择http,则使用账号访问,如果使用ssh,则使用密钥访问,密钥配置方法详见下面的3和4。
TortoiseGit密钥配置
- 
    运行TortoiseGit开始菜单中的Puttygen程序 
- 
    点击“Generate”按钮,鼠标在上图的空白地方来回移动直到进度条完毕,就会自动生一个随机的key 
- 
    将多行文本框中以“ssh-rsa”开头的内容全选、复制,并粘贴到gitlab的Settings -> SSH Keys -> Add SSH key -> Key字段中,这就是适用于gitlab的公钥 
- 
    在Puttygen中,点击“Save private key”按钮,将生成的key保存为适用于TortoiseGit的私钥(扩展名为.ppk)(TortoiseGit使用的私钥是这个,妥善保存) 
- 
    点击菜单Conversions-》Export OpenSSH Key,保存为文件,比如openssh 
Eclipse密钥配置
- 点击window—preference—Team—Git—-Configuration,在user settings栏目点击Add Entry,分别添加user.name和user.email两个Entry,对应gitlab的用户名和邮箱。
- 点击window—preference—General—Network Connections–SSH2,选择Key Management,点击Load Existing Key…,导入上面导出的OpenSSH Key,然后点击Save Private Key…到个人用户目录的.ssh目录下,比如我的放在C:\Users\Ray\.ssh,默认保存文件名为id_rsa(Eclipse和命令行使用的私钥是这个,妥善保存),默认即可。
ssh-keygen密钥配置
| 1 |  | 
验证
| 1 |  | 
配置user.emai和user.name
| 1 |  | 
使用
init
初始化仓库
| 1 |  | 
status
| 1 |  | 
add
添加(新文件或修改)到暂存区(stage或index)
| 1 |  | 
commit
从暂存提交至版本库
| 1 |  | 
将修改跳过暂存直接提交至版本库
| 1 |  | 
checkout
| 1 |  | 
rm
| 1 |  | 
ignore
.gitignore
| 1 |  | 
reset
| 1 |  | 
revert
| 1 |  | 
diff
| 1 |  | 
help
| 1 |  | 
patch
将差异生成为patch
| 1 |  | 
应用patch前检查patch是否有冲突
| 1 |  | 
应用patch
| 1 |  | 
能打的补丁先打上,有冲突的会生成.rej文件,此时可以找到这些文件进行手动打补丁
| 1 |  | 
log
show commit logs
reflog
show reference logs,当reset后又想去到未来时,可以通过reflog查到commit id
branch

| 1 |  | 
tag
| 1 |  | 
remote
添加本地的远程仓库,比如origin(自己的远程仓库)和upstream(fork的源远程仓库)等
| 1 |  | 
远程仓库地址
| 1 |  | 
添加远程仓库地址后的效果:
| 1 |  | 
clone
| 1 |  | 
push
推送到远程仓库
| 1 |  | 
| 1 |  | 
fetch
仅拉取远程仓库到本地的远程仓库(比如origin或upstream仓库),不会合并到本地工作空间或本地仓库
| 1 |  | 
pull
拉取远程仓库到本地并合并到本地工作空间,相当于git fetch + git merge,首次也需要进行分支关联。
| 1 |  | 
| 1 |  | 
| 1 |  | 
merge
将某个分支的变化合并进来,一般用于下面两种情况,一个是将成熟功能分支合并到主干分支,另一个是避免功能分支避免落后主干分支太多,不定期将主干分支合并到开发中的功能分支。
通常,合并分支时,如果可能,Git会用“fast forward”模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用“Fast forward”模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
| 1 |  | 
| 1 |  | 
冲突样例:
| 1 |  | 
冲突文件示例如下:
| 1 |  | 
rebase
顾名思义,就是重新定义(re)起点(base)的作用,也就是说把当前分支的根基换一下的意思,有点像嫁接。
| 1 |  | 
stash
Q&A
git没有完整安装
| 1 |  | 
由于git没有完整安装导致,重新完整安装即可解决。
Linux和Windows双系统引起权限被修改
| 1 |  | 
由于Linux和Windows双系统,文件权限被修改,可以通过配置git,忽略文件模式,例如:
| 1 |  | 
中文路径和文件名
git的中文支持已经非常好了,但是默认设置下,中文路径和文件名在工作区状态输出,查看历史更改概要,以及在补丁文件中,中文不能正确地显示,而是显示为八进制的字符编码,示例如下:
| 1 |  | 
参考如下配置即可:
| 1 |  | 
参考:Git的中文支持
unsafe reporitory
| 1 |  | 
| 1 |  |