git 常用命令


总结一下git的常用命令,方便复习。

创建版本库

1
2
3
4
5
6
7
8
9
10
11
# 创建仓库
git init

# 将文件添加到仓库
git add readme.txt

# 将文件提交到仓库
git commit -m "wrote a readme file"

# 查看仓库状态
git status

版本回退

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看当前的工作目录与另外一个分支的差别
git diff readme.txt

# 查看历史记录
git log

# 查看输入的git命令历史
git reflog

# 带参数的git log
git log --graph --pretty=oneline --abbrev=commit

# 回退到上一个版本,上上个版本就是HEAD^^,上100个版本就是HEAD~100
git reset --hard HEAD^

# 回退到未来的某个版本
git reset --hard commit_id

工作区和暂存区

1
2
3
4
5
6
7
8
# 查看当前工作目录与上次提交间的差异
git diff HEAD -- readme.txt

# 丢弃工作区的修改
git checkout -- file

# 撤销暂存区的修改,重新放回工作区
git reset HEAD file

删除与恢复

1
2
3
4
5
6
7
8
# 从版本库中删除文件
git rm

# 恢复误删除的文件
git checkout -- readme.txt

# 查看远程仓库的详细信息
git remote -v

远程仓库

1
2
3
4
5
6
7
8
9
# 将本地仓库与远程仓库关联
git remote add origin https://github.com/toypipi/learngit.git
git push -u origin master

# 推送分支到远程仓库
git push origin master

# 克隆仓库
git clone

分支管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 创建一个新的分支并切换
git checkout -b dev

# 同上
git branch dev
git checkout dev

# 查看当前分支
git branch

# 合并指定分支到当前分支
git merge

# 删除分支
git branch -d dev

# 合并分支,使用--no-ff参数,表示禁用Fast forward
git merge --no-ff -m "merge with no-ff" dev

stash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 把当前工作现场“储藏”起来
git stash

# 显示当前的stash列表
git stash list

# 恢复“储藏”起来的进度并删除
git stash apply
git stash drop

# 同上
git stash pop

# 强行删除一个没有被合并过的分支
git branch -D <name>

# 在本地创建和远程分支对应的分支
git checkout -b branch-name origin/branch-name

# 建立本地分支与远程分支的链接关系
git branch --set-upstream branch-name origin/branch-name

# 抓取远程的新提交
git pull

标签

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
26
# 新建一个标签
git tag <tag_name>

# 查看所有标签
git tag

# 查看标签信息
git show <tagname>

# 创建带有说明的标签
git tag -a <tag_name> -m "version 0.1 released" <commit_id>

# 用私钥签名一个标签
git tag -s <tag_name> -m "signed version 0.2 released" <commit_id>

# 删除本地标签
git tag -d <tag_name>

# 推送标签到远程
git push origin <tag_name>

# 一次性推送全部尚未推送到远程的本地标签
git push origin --tags

# 删除远程标签,先删除本地标签,再执行以下命令
git push origin :refs/tags/<tag_name>

自定义git

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 忽略某些文件时,需要编写.gitignore

# 将某些文件强制添加到git
git add -f <file_name>

# 查看gitignore规则
git check-ignore -v <file-name>

# 配置别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.unstage 'reset HEAD'
git config --global alias.last 'log -1'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

参考文档
廖雪峰的Git教程
Pro git
图解Git