Git命令速查

基本操作

# 查看当前工作区状态
git status

# 把改动增加到暂存区
git add readme.txt
git add file2.txt file3.txt
git add .
git add *.java

# 把改动从暂存区提交到版本库,生成新commit
git commit
git commit readme.txt
git commit -m "this is the comment of commit action"

# 把改动(增删改等)从暂存区提交到版本库,补充上一个提交,不生成新commit
git commit --amend

# 把改动(增删改等)从工作区增加到暂存区并提交到版本库,一步完成
git commit -a -m "comment blablabla"

# 删除工作区和暂存区文件
git rm readme.txt
git rm -f readme.txt
git rm -rf ./

# 仅删除暂存区文件,保留工作区
git rm --cached readme.txt

# 删除暂存区log目录下的匹配*.log文件
git rm log/\*.log

# 文件改名
git mv file_from file_to

# 撤销工作区的修改,回到最近一次git commit或git add时的状态,即用版本库里的版本替换工作区的版本
git checkout -- README.md
git checkout -- .

# 撤销暂存区的修改,将修改回退到工作区
git reset HEAD readme.txt

# 查看commit历史记录
git log
git log --pretty=oneline
git log --graph --pretty=oneline --abbrev-commit   # 查看分支合并情况

# 查看某文件改动历史记录
git blame file1.txt

# 查看历史命令记录
git reflog

# 版本还原,提交将产生新的版本号
git revert HEAD^

# 版本回退,提交后将抛弃该版本号以后的版本
# 上一个版本是HEAD^,上上一个版本是HEAD^^,上100个版本是HEAD~100;版本号方式只要写前几位就可以
git reset --hard HEAD^
git reset --hard 3628164

# 查看工作区与暂存区差异
$ git diff
$ git diff --stat

# 查看暂存区与版本库差异
$ git diff --cached

# 查看工作区与版本库差异
git diff HEAD
git diff HEAD readme.txt
git diff HEAD^ readme.txt

# 在当前分支上创建标签,在默认的HEAD处创建
git tag v1.0
git tag v0.9 6224937
git tag -a v0.1 -m "version 0.1 released" 3628164            # 在指定的commit_id处创建
git tag -s v0.2 -m "signed version 0.2 released" fec145a

# 查看标签列表
git tag
git show v0.9

# 删除标签
git tag -d v0.1

远程库操作

# 查看远程库信息
git remote
git remote -v
git remote show origin

# 克隆远程库
git clone https://github.com/libgit2/libgit2 
git clone https://github.com/libgit2/libgit2 mylibgitRename

# 本地新建并切换到分支dev,该分支与远程库origin的dev分支关联
git checkout -b dev origin/dev

# 将本地已有的dev分支链接到远程库的dev分支
git branch --set-upstream dev origin/dev

# 从远程库抓取当前分支的最新内容
git pull

# 向远程库推送当前分支
git push

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

# 删除远程库的dev分支
git push origin :dev

# 推送标签到远程库
git push origin v1.0
git push origin --tags     # 推送所有

# 删除远程库标签
git push origin :refs/tags/v0.9

分支操作

# 查看所有分支和当前所在分支
git branch
git branch -av

# 新建分支dev
git branch dev

# 切换分支
git checkout xxx 

# 新建并切换分支
git checkout -b xxx

# 合并dev到master分支
git checkout master
git merge dev
git merge --no-ff -m "merge with no fast forward" dev

# 删除dev分支
git branch -d dev

# 解决merge冲突
# 打开冲突文件直接修改内容,Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容。之后再提交
git add readme.txt 
git commit -m "conflict fixed"

# 储藏工作区现场
git stash

# 查看储藏的工作区
git stash list

# 恢复工作区现场
git stash apply
git stash apply stash@{0}

# 删除储藏的工作区
git stash drop

# 恢复并删除储藏的最后一个工作区
git stash pop

参考
https://git-scm.com/book/zh/v2

Creative Commons License

本文基于署名-非商业性使用-相同方式共享 4.0许可协议发布,欢迎转载、使用、重新发布,但请保留文章署名wanghengbin(包含链接:https://wanghengbin.com),不得用于商业目的,基于本文修改后的作品请以相同的许可发布。

发表评论