新增:《个人常用Git命令》
This commit is contained in:
283
docs/categories/fragments/2022/10/05/个人常用Git命令.md
Normal file
283
docs/categories/fragments/2022/10/05/个人常用Git命令.md
Normal file
@@ -0,0 +1,283 @@
|
||||
---
|
||||
title: 个人常用Git命令
|
||||
author: 查尔斯
|
||||
date: 2022/10/05 21:30
|
||||
isTop: true
|
||||
categories:
|
||||
- 杂碎逆袭史
|
||||
tags:
|
||||
- Git
|
||||
---
|
||||
|
||||
# 个人常用Git命令 <Badge text="持续更新" type="warning" />
|
||||
|
||||
## 初始配置
|
||||
|
||||
### 全局配置
|
||||
|
||||
在进行版本管理之前,首先需要对 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
|
||||
```
|
Reference in New Issue
Block a user