create a new repository on the command line
| 1
2
3
4
5
 | git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:user/project_name.git
git push -u origin master
 | 
 
push an existing repository from the command line
| 1
2
 | git remote add origin [email protected]:user/project_name.git
git push -u origin master
 | 
 
tag
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 | # 查看
git tag
# 在某个 commit 打 tag
git tag tag_name commit_id
# 本地 tag 推到线上
git push origin tag_name
# 删除本地 tag
git tag -d tag_name
# 删除本地,然后删除线上tag
git push origin :refs/tags/tag_name
# 添加tag 并推送到远程
git tag tag_name -m "tag_msg"
git push origin tag_name
 | 
 
commit
| 1
2
3
4
5
6
 | # 统计提交次数
git log | grep "^Author: Spaceack"|wc -l
# 统计合并次数
git log | grep "^Merge" | wc -l
# 修改当前分支最新的一次提交。commit的 hash 不变. 避免有多个commit的情况。
git commit --amend
 | 
 
revert
git revert -n commit-id
cherry-pick
git cherry-pick commit-id
git log
使用 pretty 格式化参数获取更详细的信息
git log --pretty="%h %p %t %cn %an %s "
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
 | 选项   说明
%H    提交对象(commit)的完整哈希字串
%h    提交对象的简短哈希字串
%T    树对象(tree)的完整哈希字串
%t    树对象的简短哈希字串
%P    父对象(parent)的完整哈希字串
%p    父对象的简短哈希字串
%an   作者(author)的名字
%ae   作者的电子邮件地址
%ad   作者修订日期(可以用 -date= 选项定制格式)
%ar   作者修订日期,按多久以前的方式显示
%cn   提交者(committer)的名字
%ce   提交者的电子邮件地址
%cd   提交日期
%cr   提交日期,按多久以前的方式显示
%s    提交说明
 | 
 
git config
| 1
2
 | git config --global user.name "spaceack"
git config --global user.email "[email protected]"
 | 
 
忽略文件权限的变更
| 1
2
 | git config core.filemode false //当前版本库
git config --global core.filemode false //全局
 | 
 
proxy
设置HTTP代理
| 1
2
 | git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
 | 
 
取消代理
| 1
2
 | git config --global --unset http.proxy
git config --global --unset https.proxy
 | 
 
submodule
项目不完整, submodule 目录为空
| 1
2
 | # 进入到 submodule 目录
git submodule update --init --recursive
 |