mirror of
https://github.com/Dichgrem/Blog.git
synced 2025-12-17 13:51:59 -05:00
style:add_highlight
This commit is contained in:
@@ -32,13 +32,13 @@ tags = ["乱七八糟"]
|
||||
|
||||
**方法一**
|
||||
创建新文件夹,在你的项目目录中运行以下命令:
|
||||
```
|
||||
```bash
|
||||
git init --initial-branch=main
|
||||
```
|
||||
这里设置默认仓库主分支名称为 main,避免因为 main/master 名称不同导致的推送问题。
|
||||
|
||||
> Git目前默认的主分支为 master,和 github 默认分支 main 不同,这使得默认配置下 git 往往连接失败。除了创建的时候设定外还可以通过以下方法改变默认分支。
|
||||
```
|
||||
```bash
|
||||
git config --global init.defaultBranch main //将默认分支修改成main
|
||||
```
|
||||
**方法二**
|
||||
@@ -55,25 +55,25 @@ git config --global init.defaultBranch main //将默认分支修改成main
|
||||
Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
|
||||
|
||||
- 显示当前的Git配置
|
||||
```
|
||||
```bash
|
||||
git config --list
|
||||
```
|
||||
- 编辑Git配置文件
|
||||
```
|
||||
```bash
|
||||
git config -e [--global]
|
||||
```
|
||||
- 设置提交代码时的用户信息
|
||||
```
|
||||
```bash
|
||||
git config [--global] user.name "[name]"
|
||||
git config [--global] user.email "[email address]"
|
||||
```
|
||||
- 设置大小写敏感(windows不区分大小写的解决办法)
|
||||
```
|
||||
```bash
|
||||
git config core.ignorecase false
|
||||
```
|
||||
|
||||
- 配置git默认使用的编辑器
|
||||
```
|
||||
```bash
|
||||
git config --global core.editor "nvim"
|
||||
```
|
||||
|
||||
@@ -82,18 +82,18 @@ git config --global core.editor "nvim"
|
||||
连接到远程仓库并推送需要证明你有权写入仓库。早期Github可以使用密码认证,现在则使用密钥认证。
|
||||
|
||||
- 生成密钥:
|
||||
```
|
||||
```bash
|
||||
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
|
||||
```
|
||||
- 生成的文件位于``~/.ssh/config``路径下,带.pub后缀的文件为公钥,不带.pub后缀的为私钥,使用``cat ~/.ssh/id_rsa.pub``将公钥添加到github/gitee的设置-SSH中。
|
||||
|
||||
- 随后使用 `ssh-add` 命令将生成的密钥添加到 SSH 代理中。
|
||||
```
|
||||
```bash
|
||||
ssh-add ~/.ssh/github_key
|
||||
ssh-add ~/.ssh/gitee_key
|
||||
```
|
||||
- 在 `~/.ssh/config` 文件中配置不同的主机别名以及相应的密钥文件。编辑该文件并添加内容,例如:
|
||||
```
|
||||
```bash
|
||||
# GitHub repository 1
|
||||
|
||||
Host github1
|
||||
@@ -116,32 +116,32 @@ Host github2
|
||||
```
|
||||
|
||||
- 连接到github:
|
||||
```
|
||||
```bash
|
||||
ssh -T git@github.com
|
||||
```
|
||||
- 添加远程仓库:
|
||||
```
|
||||
```bash
|
||||
git remote add origin <remote_repository_url>
|
||||
|
||||
# 例如:git remote add origin git@github.com:Dichgrem/dichos.git
|
||||
```
|
||||
> 如果你运行``git remote -v``发现URL为HTTP格式则可以用下面的命令改为Git格式:
|
||||
```
|
||||
```bash
|
||||
# 例如:git remote set-url origin git@github.com:Dichgrem/dichos.git
|
||||
```
|
||||
|
||||
## 创建分支
|
||||
```
|
||||
```bash
|
||||
git branch main
|
||||
```
|
||||
这将创建一个名为 main 的分支。
|
||||
|
||||
- 删除分支
|
||||
```
|
||||
```bash
|
||||
git branch -d master
|
||||
```
|
||||
- 使用大写强制删除
|
||||
```
|
||||
```bash
|
||||
git branch -D master
|
||||
```
|
||||
|
||||
@@ -149,56 +149,56 @@ git branch -D master
|
||||
## 添加和提交
|
||||
|
||||
你可以提出更改(把它们添加到暂存区),使用如下命令:
|
||||
```
|
||||
```bash
|
||||
git add <filename>
|
||||
git add *
|
||||
```
|
||||
这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:
|
||||
```
|
||||
```bash
|
||||
git commit -m "代码提交信息"
|
||||
# 例如:git commit -m "Initial commit"
|
||||
```
|
||||
现在,你的改动已经提交到了 **HEAD**,但是还没到你的远端仓库。
|
||||
|
||||
- 添加指定文件到暂存区
|
||||
```
|
||||
```bash
|
||||
git add [file1] [file2] ...
|
||||
```
|
||||
- 添加指定目录到暂存区,包括子目录
|
||||
```
|
||||
```bash
|
||||
git add [dir]
|
||||
```
|
||||
- 添加当前目录的所有文件到暂存区
|
||||
```
|
||||
```bash
|
||||
git add .
|
||||
```
|
||||
添加每个变化前,都会要求确认
|
||||
- 对于同一个文件的多处变化,可以实现分次提交
|
||||
```
|
||||
```bash
|
||||
git add -p
|
||||
```
|
||||
- 删除工作区文件,并且将这次删除放入暂存区
|
||||
```
|
||||
```bash
|
||||
git rm [file1] [file2] ...
|
||||
```
|
||||
- 停止追踪指定文件,但该文件会保留在工作区
|
||||
```
|
||||
```bash
|
||||
git rm --cached [file]
|
||||
```
|
||||
- 改名文件,并且将这个改名放入暂存区
|
||||
```
|
||||
```bash
|
||||
git mv [file-original] [file-renamed]
|
||||
```
|
||||
## 推送改动
|
||||
|
||||
你的改动现在已经在本地仓库的 **HEAD** 中了。执行如下命令以将这些改动提交到远端仓库:
|
||||
```
|
||||
```bash
|
||||
git push origin main
|
||||
```
|
||||
可以把 **main** 换成你想要推送的任何分支,如**master**或者**test**
|
||||
|
||||
如果你的远程仓库是最新的,可以使用以下命令更新本地仓库:
|
||||
```
|
||||
```bash
|
||||
git pull
|
||||
```
|
||||
|
||||
@@ -208,7 +208,7 @@ git pull
|
||||
|
||||
- GPG方式
|
||||
|
||||
```
|
||||
```bash
|
||||
sudo pacman -S gnupg //安装 GPG
|
||||
gpg --full-generate-key //生成 GPG 密钥
|
||||
gpg --list-secret-keys --keyid-format=long //查看你生成的密钥 ID
|
||||
@@ -221,7 +221,7 @@ gpg --armor --export ABCDEF1234567890 //导出公钥并添加到 GitHub
|
||||
- SSH方式
|
||||
|
||||
可以用你平时登录 GitHub 的同一个 SSH 密钥:
|
||||
```
|
||||
```bash
|
||||
git config --global gpg.format ssh //让 Git 使用 SSH 格式签名
|
||||
git config --global user.signingkey ~/.ssh/Github.pub //指定使用的 SSH 公钥
|
||||
git config --global commit.gpgsign true //表示自动签名所有提交
|
||||
@@ -231,17 +231,17 @@ git config --global commit.gpgsign true //表示自动签名所有提交
|
||||
- 本地查看
|
||||
|
||||
首先创建这个文件:
|
||||
```
|
||||
```bash
|
||||
mkdir -p ~/.ssh
|
||||
nano ~/.ssh/allowed_signers
|
||||
```
|
||||
写入你的 ``test@mail.com ssh-ed25519 AAAABBBBBBBBBBBBBBBBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx``并保存。
|
||||
随后配置Git信任该文件:
|
||||
```
|
||||
```bash
|
||||
git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers
|
||||
```
|
||||
随后使用``git log --show-signature``即可查看本地log中的
|
||||
```
|
||||
```bash
|
||||
Good "git" signature for test@mail.com with ED25519 key SHA256:ssh-ed25519 AAAABBBBBBBBBBBBBBBBBBBBB
|
||||
```
|
||||
|
||||
@@ -250,24 +250,24 @@ Good "git" signature for test@mail.com with ED25519 key SHA256:ssh-ed25519 AAAAB
|
||||
分支是用来将特性开发绝缘开来的。比如你在本地的test分支新增了一个功能,想要合并到主分支中。
|
||||
|
||||
创建一个叫做“test”的分支,并切换过去:
|
||||
```
|
||||
```bash
|
||||
git checkout -b test
|
||||
```
|
||||
新增某些功能后切换回主分支:
|
||||
```
|
||||
```bash
|
||||
git checkout master
|
||||
```
|
||||
在主分支上执行合并操作,将 test 分支的改动合并到主分支:
|
||||
```
|
||||
```bash
|
||||
git merge test
|
||||
```
|
||||
推送完成后可以把新建的分支删掉:
|
||||
```
|
||||
```bash
|
||||
git branch -d test
|
||||
```
|
||||
|
||||
### 分支常用操作
|
||||
```
|
||||
```bash
|
||||
- 列出所有本地分支
|
||||
git branch
|
||||
|
||||
@@ -351,36 +351,36 @@ Git 提供两种类型的标签:
|
||||
- 创建附注标签
|
||||
|
||||
使用 -a 参数表示“annotated”,并用 -m 提供标签说明。例如,给当前提交创建一个名为 v1.0 的附注标签:
|
||||
```
|
||||
```bash
|
||||
git tag -a v1.0 -m "发布版本 v1.0"
|
||||
```
|
||||
这会在 Git 数据库中生成一个完整的标签对象,可通过 git show v1.0 查看标签信息和对应的提交详情。
|
||||
|
||||
如果需要给旧提交贴标签,可以在命令末尾指定提交的 SHA 值(部分 SHA 也可):
|
||||
```
|
||||
```bash
|
||||
git tag -a v1.0 <commit-sha> -m "发布版本 v1.0"
|
||||
```
|
||||
|
||||
- 创建轻量标签
|
||||
|
||||
直接指定标签名即可,不加任何参数:
|
||||
```
|
||||
```bash
|
||||
git tag v1.0-light
|
||||
```
|
||||
轻量标签仅仅是一个提交引用,因此查看时不会显示附加信息。
|
||||
|
||||
### 列出标签
|
||||
- 列出所有标签
|
||||
```
|
||||
```bash
|
||||
git tag
|
||||
```
|
||||
- 还可以使用通配符过滤:
|
||||
```
|
||||
```bash
|
||||
git tag -l "v1.*"
|
||||
```
|
||||
这样便于管理和筛选大量标签。
|
||||
- 查看标签详细信息
|
||||
```
|
||||
```bash
|
||||
git show v1.0
|
||||
```
|
||||
这会显示标签对象的元数据以及对应的提交记录。
|
||||
@@ -388,45 +388,45 @@ git show v1.0
|
||||
### 推送标签
|
||||
``默认情况下,git push 不会将本地标签推送到远程仓库。推送标签有两种方式:``
|
||||
- 推送单个标签
|
||||
```
|
||||
```bash
|
||||
git push origin v1.0
|
||||
```
|
||||
- 一次性推送所有标签
|
||||
```
|
||||
```bash
|
||||
git push origin --tags
|
||||
```
|
||||
### 删除标签
|
||||
- 删除本地标签
|
||||
```
|
||||
```bash
|
||||
git tag -d v1.0
|
||||
```
|
||||
- 删除远程标签
|
||||
```
|
||||
```bash
|
||||
git push origin --delete v1.0
|
||||
```
|
||||
## 日志
|
||||
|
||||
如果你想了解本地仓库的历史记录,最简单的命令就是使用:
|
||||
```
|
||||
```bash
|
||||
git log
|
||||
```
|
||||
- 只看某一个人的提交记录:
|
||||
```
|
||||
```bash
|
||||
git log --author=bob
|
||||
```
|
||||
- 一个压缩后的每一条提交记录只占一行的输出:
|
||||
```
|
||||
```bash
|
||||
git log --pretty=oneline
|
||||
```
|
||||
- 看看哪些文件改变了:
|
||||
```
|
||||
```bash
|
||||
git log --name-status
|
||||
```
|
||||
## 生成补丁
|
||||
|
||||
比如你修改了项目中的``fs/proc/base.c``,然后
|
||||
|
||||
```
|
||||
```bash
|
||||
git add fs/proc/base.c
|
||||
git commit -m "fix:base"
|
||||
git format-patch origin/16.0
|
||||
@@ -435,13 +435,13 @@ git format-patch origin/16.0
|
||||
|
||||
## 删除前一个提交记录
|
||||
有时候手滑或者不想使用一个commit说明,可以用以下命令撤销上一个 commit:
|
||||
```
|
||||
```bash
|
||||
git reset --soft HEAD~1
|
||||
```
|
||||
这个命令会撤销上一个 commit,但保留文件修改(代码仍然在工作区)。适用于 想要重新提交(amend)或调整 commit 的情况。
|
||||
|
||||
如果你想彻底删除更改(不保留代码修改),可以使用:
|
||||
```
|
||||
```bash
|
||||
git reset --hard HEAD~1
|
||||
```
|
||||
> 注意:--hard 会清除未提交的更改,无法恢复。
|
||||
@@ -450,7 +450,7 @@ git reset --hard HEAD~1
|
||||
|
||||
### 📁 `.git` 目录结构概览
|
||||
|
||||
```
|
||||
```bash
|
||||
.git/
|
||||
├── HEAD
|
||||
├── config
|
||||
@@ -527,7 +527,7 @@ Fixes #123
|
||||
这可以在提交后自动关闭相关问题。
|
||||
|
||||
### 常见的 Commit 类型
|
||||
```
|
||||
```bash
|
||||
- feat:新功能的添加
|
||||
示例:feat(user): 添加用户注册功能
|
||||
|
||||
|
||||
Reference in New Issue
Block a user