git常用命令
git log 命令
git log -n
显示前N条日志
git log –stat -n
显示简要的增改行数统计,每次提交文件的变更统计
git log –pretty=format:” “
| 选项 | 说明 | 
|---|---|
| %H | 提交对象(commit)的完整哈希字串 | 
| %h | 提交对象的简短哈希字串 | 
| %T | 树对象(tree)的完整哈希字串 | 
| %t | 树对象的简短哈希字串 | 
| %P | 父对象(parent)的完整哈希字串 | 
| %p | 父对象的简短哈希字串 | 
| %an | 作者(author)的名字 | 
| %ae | 作者的电子邮件地址 | 
| %ad | 作者修订日期(可以用 -date= 选项定制格式) | 
| %ar | 作者修订日期,按多久以前的方式显示 | 
| %cn | 提交者(committer)的名字 | 
| %ce | 提交者的电子邮件地址 | 
| %cd | 提交日期 | 
| %cr | 提交日期,按多久以前的方式显示 | 
| %s | 提交说明 | 
| 1 | git log --pretty=format:" %s" -3 | 
git Commit message
Commit message 都包括三个部分:Header,Body 和 Footer。1
2
3
4
5<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
Header部分只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需)
| type | 意义 | 
|---|---|
| feat | 新功能(feature) | 
| fix | 修补bug | 
| docs | 文档(documentation) | 
| style | 格式(不影响代码运行的变动) | 
| refactor | 重构(即不是新增功能,也不是修改bug的代码变动) | 
| test | 增加测试 | 
| chore | 构建过程或辅助工具的变动 | 
scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
subject是 commit 目的的简短描述,不超过50个字符。
以动词开头,使用第一人称现在时,比如change,而不是changed或changes
第一个字母小写
结尾不加句号(.)
总结:commit message应包含type+":"+subject
git issues
| 1 | // 关闭一个 | 
git branch
| 1 | 查看所有分支(前面带*号的代表你当前工作目录所处的分支) | 
git config
| 1 | git config --global user.name openks | 
git提交流程
为了保持提交记录的干净1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25// 从服务器拉代码
git pull
// 本地修改1
git commit -am "c1"
// 本地修改2
git commit -am "c2"
// 本地修改3
git commit -am "c3"
// 1,2,3修改为一个功能先合并提交 
// 即本地rebase
git rebase -i 
git rebase -i SHA1
git rebase -i HEAD~5
// 弹出编辑框 点击insert进入编辑模式 保留第一个pick 其他的pick改为s  然后esc :wq
// 然后从远程服务器拉代码
git pull
//  如果不冲突则最好 直接push到服务器
git push
// 如果冲突则merage合并冲突
git add .
git commit -am "合并"
// 再次rebase 重新合并代码
git rebase 
// 然后再push到服务器 
git push
git仓库备份
需求很简单
在oschina上做主要的代码,在coding做代码备份  
- 首先在oschina和coding上分别创建项目test_git_mirroe
- 从oschina上clone代码git clone https://git.oschina.net/openks/test_git_mirroe.git
- 跳转到项目目录cd test_git_mirroe
- 添加coding的远程仓库git remote add coding https://git.coding.net/zhuyangxing/test_git_mirroe.git
- 提交coding做镜像代码git push --mirror coding
- 以后在test_git_mirroe上提交的代码都提交到oschina上
- 想要在coding上同步就执行git push --mirror coding即可
git一次提交到两个仓库
修改.git文件夹下的config文件
在fetch下添加想要提交的其他git路径即可1
2
3
4[remote "origin"]
  url = https://git.oschina.net/openks/test_git_mirroe.git
  fetch = +refs/heads/*:refs/remotes/origin/*
  url = new git url
git 文件对比
方法一:还是我最常用的命令行
| 1 | git diff <commitA> <commitB> filename | 
方法二:在gitlab上对比查看
输入两个提交版本,会显示所有文件的版本差异相同的则不显示,具体如下图
再上一张我没找到问题的文件对比图,这确实是什么都没改啊(加了class这个除外)
git Tag
| 1 | # 创建tag | 
关于GPG1
2
3
4
5
6
7# 生成GPG Key 根据提示选择加密方法 并输入相关信息即可
gpg --gen-key
# 验证GPG Key是否生成成功
gpg --list-keys
# 上边显示的是公钥,顺便也看一下与之匹配的私钥生成如何:
gpg --list-secret-keys
# 然后就可以使用gpg加密你的tag了
git patch
git中的patch有两种:
一是用git diff生成的标准patch
二是用git format-patch生成的Git专用Patch
git format-patch生成的patch在文件的前面会有diff的信息,还有提交者,时间等等  
| 1 | # 使用git diff 生成patch (不建议) | 
add 2018-01-17 10:42:13
把gitbash的编辑器设置为其他文本编辑器
git vim在rebase时经常崩溃并报如下错误
git rebase vim Caught deadly signal SEGV解决方案:
设置git的编辑器为notepad++(修改完后需关闭整个notepad++才可继续)1
git config --global core.editor \ "'C:/Program Files (x86)/Notepad++/notepad++.exe'”
查看本地rebase之前的提交记录
| 1 | //只在rebase的机器上能看到记录,从仓库拉下来的没有记录 | 
add 2018-02-09 15:12:25
如何查看某次提交修改的文件有哪些
| 1 | # 查看从sha1开始最近 n次的提交改动了那些文件 | 
以图表格式显示提交记录
| 1 | #以图表方式查看各分支之间的关系 | 
比对最近几次已经commit代码改动内容
| 1 | # 想查看几次就在head后面该为几 |