From 4f3d23b3c66f924d208ddd6fabbba5bd460f7258 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Thu, 6 Oct 2022 00:14:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E3=80=8A=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E5=B8=B8=E7=94=A8Git=E5=91=BD=E4=BB=A4=E3=80=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragments/2022/10/05/个人常用Git命令.md | 283 ++++++++++++++++++ 1 file changed, 283 insertions(+) create mode 100644 docs/categories/fragments/2022/10/05/个人常用Git命令.md diff --git a/docs/categories/fragments/2022/10/05/个人常用Git命令.md b/docs/categories/fragments/2022/10/05/个人常用Git命令.md new file mode 100644 index 000000000..ead177232 --- /dev/null +++ b/docs/categories/fragments/2022/10/05/个人常用Git命令.md @@ -0,0 +1,283 @@ +--- +title: 个人常用Git命令 +author: 查尔斯 +date: 2022/10/05 21:30 +isTop: true +categories: + - 杂碎逆袭史 +tags: + - Git +--- + +# 个人常用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 +``` + +### 将工作区的修改添加到暂存区 + +::: tip 笔者说 +该命令可执行多次,来实现将多个文件的修改添加到暂存区。另外,如果某个文件在添加到暂存区后又发生了变更,在没有提交到版本库之前,依然需要执行一次该命令。 +::: + +```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 +``` + +### 回退版本 + +::: tip 笔者说 +1、回退版本的数量较少时,可以将 `HEAD~回退版本的数量` 改为 `HEAD^` 的写法。 + +`HEAD^` 相当于 `HEAD~1`,`HEAD^^` 相当于 `HEAD~2`,依次类推。 + +2、回退版本的数量比较多时,建议采用指定 Commit ID 来回退的方法 +::: + +```shell +# --hard 回退到相应版本,放弃之前版本的修改 +git reset --hard HEAD~回退版本的数量/HEAD^/Commit ID + +# --soft 回退到相应版本,保留之前版本的修改 +git reset --soft HEAD~回退版本的数量/HEAD^/Commit ID +``` + +### 修改最后一次提交的信息 + +::: warning 笔者说 +如果你已经将之前本地版本推送到了远程仓库,那么在下一次推送的时候就需要加上 `-f` 参数了。 + +`git push -f` + +但是 GitHub 或者公司内的 GitLab 等,默认都是禁止强制推送的,需要设置一下,所以还是多加注意吧。 +::: + +```shell +git commit --amend [--author="用户名 <用户邮箱>"] [-m 提交信息] +``` + +### 修改指定提交的信息 + +::: warning 笔者说 +如果你已经将之前本地版本推送到了远程仓库,那么在下一次推送的时候就需要加上 `-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] [远程主机名] [本地分支名]:[远程分支名] +``` + +### 克隆远程仓库到本地 + +::: tip 笔者说 +适用于本地不存在仓库,远程存在的情况。 + +例如:换了电脑,刚开始进入某个项目组等场景。 +::: + +```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 +``` \ No newline at end of file