Skip to content

个人常用 Git 命令

初始配置

全局配置

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

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

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

局部配置

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

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

版本控制相关

初始化仓库

自动创建 master 分支。

shell
git init

查看工作区状态

shell
git status

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

笔者说

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

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

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

shell
git commit -m "提交信息"

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

shell
git restore 文件名

撤销暂存区的修改

shell
git restore --staged 文件名

查看提交日志

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

查看操作日志

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

shell
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

修改最后一次提交的信息

笔者说

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

git push -f

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

shell
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

远程仓库相关

生成 SSH Key

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

添加远程仓库

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

查看远程仓库信息

shell
git remote -v

删除远程仓库

shell
git remote rm origin

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

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

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

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

克隆远程仓库到本地

笔者说

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

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

shell
git clone 远程仓库Git地址

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

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

多人协作

查看本地分支

shell
git branch

创建并切换分支

shell
git switch -c 分支名

创建分支

shell
git branch 分支名

切换分支

shell
git switch 分支名

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

shell
git merge 分支名

标签相关

查看标签

shell
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]

查看指定标签详细信息

shell
git show 标签名

删除标签

shell
git tag -d 标签名

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

shell
git push origin -tags