Skip to content

个人常用 Git 命令 持续更新

初始配置

全局配置

在进行版本管理之前,首先需要对 Git 进行用户配置。

全局配置指的是当前终端上的所有仓库使用该配置,可以在任何位置设置。

shell
# 全局配置用户名
git config --global user.name "用户名"
# 全局配置用户邮箱
git config --global user.email "用户邮箱"
# 全局配置用户名
git config --global user.name "用户名"
# 全局配置用户邮箱
git config --global user.email "用户邮箱"

局部配置

局部配置指的是当前终端上的指定仓库使用该配置,需要在指定仓库内进行设置。

shell
# 局部配置用户名
git config user.name "用户名"
# 局部配置用户邮箱
git config user.email "用户邮箱"
# 局部配置用户名
git config user.name "用户名"
# 局部配置用户邮箱
git config user.email "用户邮箱"

版本控制相关

初始化仓库

自动创建 master 分支。

shell
git init
git init

查看工作区状态

shell
git status
git status

将工作区的修改添加到暂存区

笔者说

该命令可执行多次,来实现将多个文件的修改添加到暂存区。另外,如果某个文件在添加到暂存区后又发生了变更,在没有提交到版本库之前,依然需要执行一次该命令。

shell
git add 文件名1 [文件名2...]
git add 文件名1 [文件名2...]

将暂存区的修改提交到版本库

shell
git commit -m "提交信息"
git commit -m "提交信息"

撤销未提交到暂存区的修改

shell
git restore 文件名
git restore 文件名

撤销暂存区的修改

shell
git restore --staged 文件名
git restore --staged 文件名

查看提交日志

shell
# --oneline 以一行格式显示提交日志
# 查看该文件的提交日志
git log [--oneline] [文件名]
# --oneline 以一行格式显示提交日志
# 查看该文件的提交日志
git log [--oneline] [文件名]

查看操作日志

相比于 git log,reflog 可以查看到所有的操作行为,例如:回退版本······

shell
git reflog
git reflog

回退版本

笔者说

1、回退版本的数量较少时,可以将 HEAD~回退版本的数量 改为 HEAD^ 的写法。

HEAD^ 相当于 HEAD~1HEAD^^ 相当于 HEAD~2,依次类推。

2、回退版本的数量比较多时,建议采用指定 Commit ID 来回退的方法

shell
# --hard 回退到相应版本,放弃之前版本的修改
git reset --hard HEAD~回退版本的数量/HEAD^/Commit ID

# --soft 回退到相应版本,保留之前版本的修改
git reset --soft HEAD~回退版本的数量/HEAD^/Commit ID
# --hard 回退到相应版本,放弃之前版本的修改
git reset --hard HEAD~回退版本的数量/HEAD^/Commit ID

# --soft 回退到相应版本,保留之前版本的修改
git reset --soft HEAD~回退版本的数量/HEAD^/Commit ID

修改最后一次提交的信息

笔者说

如果你已经将之前本地版本推送到了远程仓库,那么在下一次推送的时候就需要加上 -f 参数了。

git push -f

但是 GitHub 或者公司内的 GitLab 等,默认都是禁止强制推送的,需要设置一下,所以还是多加注意吧。

shell
git commit --amend [--author="用户名 <用户邮箱>"] [-m 提交信息]
git commit --amend [--author="用户名 <用户邮箱>"] [-m 提交信息]

修改指定提交的信息

笔者说

如果你已经将之前本地版本推送到了远程仓库,那么在下一次推送的时候就需要加上 -f 参数了。

git push -f

但是 GitHub 或者公司内的 GitLab 等,默认都是禁止强制推送的,需要设置一下,所以还是多加注意吧。

shell
# 1.开始(Commit ID 是要修改提交信息的版本的上一个版本的 Commit ID)
git rebase -i Commit ID
# 2.打开记事本后,将对应提交前的 pick 改为 e 或 edit,保存退出
# 3.进行修订,同上
git commit --amend [--author="用户名 <用户邮箱>"] [-m 提交信息]
# 4.完成
git rebase --continue
# 1.开始(Commit ID 是要修改提交信息的版本的上一个版本的 Commit ID)
git rebase -i Commit ID
# 2.打开记事本后,将对应提交前的 pick 改为 e 或 edit,保存退出
# 3.进行修订,同上
git commit --amend [--author="用户名 <用户邮箱>"] [-m 提交信息]
# 4.完成
git rebase --continue

远程仓库相关

生成 SSH Key

shell
# 一路回车即可,最终会在 ${user.home}/.ssh/ 下生成 id_rsa.pub 公钥文件和 id_rsa 私钥文件
ssh-keygen -t rsa -C "用户邮箱"
# 一路回车即可,最终会在 ${user.home}/.ssh/ 下生成 id_rsa.pub 公钥文件和 id_rsa 私钥文件
ssh-keygen -t rsa -C "用户邮箱"

添加远程仓库

shell
git remote add origin 远程仓库Git地址
git remote add origin 远程仓库Git地址

查看远程仓库信息

shell
git remote -v
git remote -v

删除远程仓库

shell
git remote rm origin
git remote rm origin

将本地分支推送到远程仓库

shell
# 第一次推送时,加上 [-u],后续不需要加 [-u]
# 如果远程分支名和本地分支名相同,可以省略
# 常见用法:
#   git push -u origin master
#   git push origin master
#   git push
git push [-u] [远程主机名] [本地分支名]:[远程分支名]
# 第一次推送时,加上 [-u],后续不需要加 [-u]
# 如果远程分支名和本地分支名相同,可以省略
# 常见用法:
#   git push -u origin master
#   git push origin master
#   git push
git push [-u] [远程主机名] [本地分支名]:[远程分支名]

【谨慎】如果本地版本和远程版本不一致,可强制推送覆盖:

shell
git push [--force/-f] [远程主机名] [本地分支名]:[远程分支名]
git push [--force/-f] [远程主机名] [本地分支名]:[远程分支名]

克隆远程仓库到本地

笔者说

适用于本地不存在仓库,远程存在的情况。

例如:换了电脑,刚开始进入某个项目组等场景。

shell
git clone 远程仓库Git地址
git clone 远程仓库Git地址

拉取远程分支与本地分支合并

shell
# 如果远程分支是与当前分支合并,则冒号后面的部分可以省略
# 常见用法:git pull origin
git pull [远程主机名] [远程分支名]:[本地分支名]
# 如果远程分支是与当前分支合并,则冒号后面的部分可以省略
# 常见用法:git pull origin
git pull [远程主机名] [远程分支名]:[本地分支名]

多人协作

查看本地分支

shell
git branch
git branch

创建并切换分支

shell
git switch -c 分支名
git switch -c 分支名

创建分支

shell
git branch 分支名
git branch 分支名

切换分支

shell
git switch 分支名
git switch 分支名

将指定分支合并到当前分支

shell
git merge 分支名
git merge 分支名

标签相关

查看标签

shell
git tag
git tag

打标签

shell
# 将指定版本打标签
# 常见用法:
#   git tag -a v1.0.0 -m "version 1.0.0" b43375
#   git tag v1.0.0
git tag [-a 标签名] [-m 标签信息] [Commit ID]
# 将指定版本打标签
# 常见用法:
#   git tag -a v1.0.0 -m "version 1.0.0" b43375
#   git tag v1.0.0
git tag [-a 标签名] [-m 标签信息] [Commit ID]

查看指定标签详细信息

shell
git show 标签名
git show 标签名

删除标签

shell
git tag -d 标签名
git tag -d 标签名

将本地标签推送到远程仓库

shell
git push origin -tags
git push origin -tags

commit 提交规范

  • 常用的 type 类型
类型描述
build编译相关的修改,例如发布版本、对项目构建或者依赖的改动
chore其他修改, 比如改变构建流程、或者增加依赖库、工具等
ci持续集成修改
docs文档修改
feat新特性、新功能
fix修改 bug
perf优化相关,比如提升性能、体验
refactor代码重构
revert回滚到上一个版本
style代码格式修改, 注意不是 css 修改
test测试用例修改
  • 示例

例如:fix(模块): 修复bug #关联issues

注意:英文括号英文冒号后面加一个空格

bash
git commit -m 'fix(用户管理): 批量导入主键冲突 #5'
git commit -m 'fix(用户管理): 批量导入主键冲突 #5'