总结一下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