在日常的开发过程中离不开git 的接触和使用,这里我总结归纳一下比较常见的以及实际开发过程中常用的 git 命令,持续更新中

关于远程仓库

因为远程主机默认的主机名是 origin ,这里的例子均以 origin 为例

# 获取线上该分支最新的代码
$ git pull origin <分支名>
# 将本地该分支的代码上传到远程仓库,如果有冲突无法上传,可以添加 -f 参数强行上传
$ git push origin <分支名>
# 列出所有远程主机
$ git remote
# 查看主机的详细信息
$ git remote show <主机名>
# 将远程仓库该分支的最新代码取回本地
$ git fetch origin <分支名>
# 克隆地址所对应的远程仓库的代码到本地
$ git clone <地址>

关于提交

# 提交commit
$ git commit -m "<备注>"
# 添加并提交,相当于 git add . + git commit -m "" 
$ git commit -a -m "<备注>"
# 合并本次修改到上次commit(不会产生新的commit记录)
$ git commit --amend

关于分支

# 切换分支
$ git checkout <分支名>
# 创建并切换至该分支
$ git checkout -b <分支名>
# 创建一个分支关联到远程分支
$ git branch -t <分支名> <远程分支名>
# 修改当前分支的分支名
$ git branch -m "<分支名>"
# 列出各个分支最后提交的信息
$ git branch -v
# 列出本地分支和远程分支的映射关系
$ git branch -vv
# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有分支
$ git branch -a

关于查看日志及记录

# 查看commit记录
$ git log
# 查看所有历史操作记录,包括commit和reset的操作和已经被删除的commit记录
$ git reflog / git log -g
# 将commit压缩到一行展示
$ git log --oneline
# 显示每次提交文件的增删数
$ git log --stat
# 显示每次提交具体修改的内容
$ git log -p
# 查看当前仓库状态
$ git status

关于撤销

# 撤销指定文件在工作区和暂存区的修改
$ git checkout <文件路径>
# 删除所有工作区和暂存区的修改,回到最近一次commit的状态
$ git reset --hard
# 将指针回退三个commit,并改变暂存区
$ git reset HEAD~3 
# 将指针回退三个commit,但不改变暂存区,即删除commit记录,但保留工作区的本次修改
$ git reset --soft HEAD~3
# 将指针回退三个commit,改变工作区,即删除commit记录并回退工作区的修改。
$ git reset --hard HEAD~3

关于保存

# 暂时保存没有提交的工作
$ git stash
# 列出所有暂时保存的工作
$ git stash list
# 恢复最近一次stash的文件并删除list中的记录
$ git stash pop
# 恢复最近一次stash的文件但不删除list中的记录
$ git stash apply
# 恢复指定的暂时保存的工作
$ git stash apply stash@{1}
# 丢弃最近一次stash的文件
$ git stash drop
# 删除所有的stash
$ git stash clear

关于合并分支

# 将指定分支与当前分支合并
$ git merge <分支名> / git rebase <分支名>

有关git mergegit rebase的区别,可以参考merge和rebase的选择

关于git配置

以下命令操作的均为当前仓库git配置,如需操作全局git配置,增加 --global 参数即可

# 配置快捷键,输入git s就代表git status 
$ git config alias.s status 
# 获得git提交的用户名
$ git config user.name
# 获得git提交的邮箱
$ git config user.email
# 更改git提交的用户名
$ git config user.name <用户名>
# 更改git提交的邮箱
$ git config user.email <邮箱>