Git:修订文档
This commit is contained in:
parent
5b34eab911
commit
dd5101cbd8
@ -26,6 +26,8 @@ Git 的分支模型被称为它的**「必杀技特性」**,也正因为这一
|
|||||||
```shell
|
```shell
|
||||||
// 创建分支
|
// 创建分支
|
||||||
git branch <branch-name>
|
git branch <branch-name>
|
||||||
|
// 创建并切换到分支
|
||||||
|
git branch -b <branch-name>
|
||||||
```
|
```
|
||||||
|
|
||||||
这会在当前所在的提交对象上创建一个指针。
|
这会在当前所在的提交对象上创建一个指针。
|
||||||
@ -36,7 +38,7 @@ git branch <branch-name>
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
// 切换到一个已存在的分支
|
// 切换到一个已存在的分支
|
||||||
git checkout <branch-name>
|
git switch <branch-name>
|
||||||
|
|
||||||
// 在当前所在的提交对象上创建新分支,并切换到新分支。
|
// 在当前所在的提交对象上创建新分支,并切换到新分支。
|
||||||
git checkout -b <branch-name>
|
git checkout -b <branch-name>
|
||||||
@ -56,6 +58,13 @@ git branch
|
|||||||
git merge <branch-name>
|
git merge <branch-name>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 指定分支
|
||||||
|
|
||||||
|
```shell
|
||||||
|
// 强制指定分支到某个提交记录
|
||||||
|
git branch -f <branch> [<start-point>]
|
||||||
|
```
|
||||||
|
|
||||||
### 删除分支
|
### 删除分支
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -94,7 +103,7 @@ git checkout -b iss53
|
|||||||
现在你接到那个电话,有个紧急问题等待你来解决,现在要做的就是切换回主分支。
|
现在你接到那个电话,有个紧急问题等待你来解决,现在要做的就是切换回主分支。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git checkout master
|
git switch master
|
||||||
```
|
```
|
||||||
|
|
||||||
接下来,你要修复这个紧急问题。新建一个 hotfix 分支,直至问题解决。
|
接下来,你要修复这个紧急问题。新建一个 hotfix 分支,直至问题解决。
|
||||||
@ -108,7 +117,7 @@ git checkout -b hotfix
|
|||||||
然后将 hotfix 分支合并回你的 master 分支来部署线上。
|
然后将 hotfix 分支合并回你的 master 分支来部署线上。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git checkout master
|
git switch master
|
||||||
git merge hotfix
|
git merge hotfix
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -125,7 +134,7 @@ git branch -d hotfix
|
|||||||
假设这时你已经完成了 iss53 的需求,需要将 iss53 分支合并入 master 分支。
|
假设这时你已经完成了 iss53 的需求,需要将 iss53 分支合并入 master 分支。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git checkout master
|
git switch master
|
||||||
git merge iss53
|
git merge iss53
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -222,20 +231,23 @@ git push <remote> --delete <branch>
|
|||||||
你可以使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。在 Git 中,这种操作就叫做 变基(rebase)。
|
你可以使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。在 Git 中,这种操作就叫做 变基(rebase)。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
// 重放式变基
|
||||||
git rebase <base-branch> <topic-branch>
|
git rebase <base-branch> <topic-branch>
|
||||||
|
// 交互式变基
|
||||||
|
git rebase -i <base-branch> <topic-branch>
|
||||||
```
|
```
|
||||||
|
|
||||||
它的原理是首先找到这两个分支(假设当前分支 experiment、变基操作的目标基底分支 master) 的最近共同祖先,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支指向目标基底, 最后以此将之前另存为临时文件的修改依序应用。
|
它的原理是首先找到这两个分支(假设当前分支 experiment、变基操作的目标基底分支 master) 的最近共同祖先,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支指向目标基底, 最后以此将之前另存为临时文件的修改依序应用。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
// 1.切换 experiment 分支。
|
// 1.切换 experiment 分支。
|
||||||
git checkout experiment
|
git switch experiment
|
||||||
|
|
||||||
// 2.变基至 master 分支。
|
// 2.变基至 master 分支。
|
||||||
git rebase master
|
git rebase master
|
||||||
|
|
||||||
// 3.切换 master 分支。
|
// 3.切换 master 分支。
|
||||||
git checkout master
|
git switch master
|
||||||
|
|
||||||
// 4.合并 experiment 分支。
|
// 4.合并 experiment 分支。
|
||||||
git merge experiment
|
git merge experiment
|
||||||
@ -255,7 +267,7 @@ git merge experiment
|
|||||||
git rebase --onto master server client
|
git rebase --onto master server client
|
||||||
|
|
||||||
// 2. 切换 master 分支
|
// 2. 切换 master 分支
|
||||||
git checkout master
|
git switch master
|
||||||
|
|
||||||
// 3. 合并 client 分支
|
// 3. 合并 client 分支
|
||||||
git merge client
|
git merge client
|
||||||
@ -268,7 +280,7 @@ git merge client
|
|||||||
git rebase master server
|
git rebase master server
|
||||||
|
|
||||||
// 2.切换 master 分支
|
// 2.切换 master 分支
|
||||||
git checkout master
|
git switch master
|
||||||
|
|
||||||
// 3.合并分支
|
// 3.合并分支
|
||||||
git merge server
|
git merge server
|
||||||
|
@ -23,14 +23,13 @@ date: 2022-09-13
|
|||||||
在命令行当前目录中执行 git init,就可以将当前目录初始化为 Git 仓库。
|
在命令行当前目录中执行 git init,就可以将当前目录初始化为 Git 仓库。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
~/gitStudy# ls -l
|
$ ls -l
|
||||||
total 0
|
total 0
|
||||||
~/gitStudy# git init
|
$ git init
|
||||||
Initialized empty Git repository in /root/gitStudy/.git/
|
Initialized empty Git repository in /root/gitStudy/.git/
|
||||||
# 在 /root/gitStudy/.git/ 目录初始化空 Git 仓库完毕。
|
# 在 /root/gitStudy/.git/ 目录初始化空 Git 仓库完毕。
|
||||||
~/gitStudy# ls -a
|
$ ls -a
|
||||||
. .. .git
|
. .. .git
|
||||||
~/gitStudy#
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### git clone
|
### git clone
|
||||||
@ -145,7 +144,7 @@ $ git commit -am 'changes to hello file'
|
|||||||
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
|
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git reset HEAD^
|
$git reset HEAD^
|
||||||
```
|
```
|
||||||
|
|
||||||
### git rm
|
### git rm
|
||||||
@ -183,7 +182,7 @@ $ git branch -d (branchname)
|
|||||||
在 Git 中切换至指定分支。
|
在 Git 中切换至指定分支。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git switch master
|
$git switch master
|
||||||
```
|
```
|
||||||
|
|
||||||
### git checkout
|
### git checkout
|
||||||
@ -191,7 +190,7 @@ git switch master
|
|||||||
在 Git 中 git checkout 创建新分支,并立即切换到它
|
在 Git 中 git checkout 创建新分支,并立即切换到它
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git checkout -b (branchname)
|
$git checkout -b (branchname)
|
||||||
```
|
```
|
||||||
|
|
||||||
### git merge
|
### git merge
|
||||||
@ -282,7 +281,7 @@ $ git remote rm <remote-name>
|
|||||||
在 Git 中 git fetch 从远端仓库**下载新分支与数据**。
|
在 Git 中 git fetch 从远端仓库**下载新分支与数据**。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git fetch <remote-name>
|
$git fetch <remote-name>
|
||||||
```
|
```
|
||||||
|
|
||||||
### git pull
|
### git pull
|
||||||
@ -290,7 +289,7 @@ git fetch <remote-name>
|
|||||||
在 Git 中 **git pull 从远端仓库提取数据并尝试合并到当前分支。**该命令就是在 git fetch 之后紧接着 git merge 远端分支到你所在的任意分支。
|
在 Git 中 **git pull 从远端仓库提取数据并尝试合并到当前分支。**该命令就是在 git fetch 之后紧接着 git merge 远端分支到你所在的任意分支。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git fetch <remote-name>
|
$git pull <remote-name>
|
||||||
```
|
```
|
||||||
|
|
||||||
### git push
|
### git push
|
||||||
@ -298,7 +297,7 @@ git fetch <remote-name>
|
|||||||
在 Git 中 git push remote-name branch-name 将本地改动推送到远端仓库。 如果可以的话,它会依据你的 branch 的样子,推送到远端的 branch 去。
|
在 Git 中 git push remote-name branch-name 将本地改动推送到远端仓库。 如果可以的话,它会依据你的 branch 的样子,推送到远端的 branch 去。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git push github master
|
$git push github master
|
||||||
```
|
```
|
||||||
|
|
||||||
### git archive
|
### git archive
|
||||||
|
@ -1,182 +0,0 @@
|
|||||||
---
|
|
||||||
title: 命令示例
|
|
||||||
description: Git 命令示例
|
|
||||||
keywords:
|
|
||||||
- Git
|
|
||||||
- 命令示例
|
|
||||||
tags:
|
|
||||||
- Git
|
|
||||||
sidebar_position: 4
|
|
||||||
author: 7Wate
|
|
||||||
date: 2022-09-13
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
## 配置相关
|
|
||||||
|
|
||||||
省略 `--global` 参数代表仅本项目生效
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# 初始化本仓库(创建新仓库)
|
|
||||||
git init
|
|
||||||
git config --global user.name "xxx" # 配置用户名
|
|
||||||
git config --global user.email "xxx@xxx.com" # 配置邮件
|
|
||||||
git config --global color.ui true # git status等命令自动着色
|
|
||||||
git config --global color.status auto
|
|
||||||
git config --global color.diff auto
|
|
||||||
git config --global color.branch auto
|
|
||||||
git config --global color.interactive auto
|
|
||||||
git config --global http.proxy # 查看当前代理设置
|
|
||||||
git config --global http.proxy 'http://127.0.0.1:1080' # 设置http代理
|
|
||||||
git config --global https.proxy 'socks5://127.0.0.1:1080' # 设置https代理
|
|
||||||
git config --global --unset http.proxy #删除 proxy git config
|
|
||||||
```
|
|
||||||
|
|
||||||
## 代码文件与提交相关
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git status # 查看当前版本状态
|
|
||||||
git add t.txt # 添加单个文件至暂存区
|
|
||||||
git add . # 增加所有更改过的文件至index,不包括删除
|
|
||||||
git add -u # 仅增加所有已经跟踪的文件至index,不包括新文件
|
|
||||||
git add -A # git add . 和 git add -u的合集
|
|
||||||
git commit -m 'xxx' # 提交
|
|
||||||
git commit --amend -m 'xxx' # 合并上一次提交(用于反复修改)
|
|
||||||
git commit -am 'xxx' # 将add和commit合为一步
|
|
||||||
git rm xxx # 删除index中的文件
|
|
||||||
git rm -r * # 递归删除
|
|
||||||
git log # 显示提交日志
|
|
||||||
git log -1 # 显示1行日志 -n为n行
|
|
||||||
git log --stat # 显示提交日志及相关变动文件
|
|
||||||
git log -p -m
|
|
||||||
git log -- filename # 查看文件的修改日志
|
|
||||||
git show xxxx # 显示某个提交的详细内容
|
|
||||||
git show dfb02 # 可只用commitid的前几位
|
|
||||||
git show HEAD # 显示HEAD提交日志
|
|
||||||
git show HEAD^ # 显示上一个版本的提交日志 ^^为上两个版本 ^5为上5个版本
|
|
||||||
git whatchanged # 显示提交历史对应的文件修改
|
|
||||||
git revert xxxxxx # 撤销提交xxxxx
|
|
||||||
```
|
|
||||||
|
|
||||||
## tag 相关
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git tag # 显示已存在的tag
|
|
||||||
git tag -a v2.0 -m 'xxx' # 增加v2.0的tag
|
|
||||||
git show v2.0 # 显示v2.0的日志及详细内容
|
|
||||||
git log v2.0 # 显示v2.0的日志
|
|
||||||
git push --tags # 把所有tag推送到远程仓库
|
|
||||||
git tag -d tag_name # 本地删除名为tag_name的tag
|
|
||||||
git push origin :refs/tags/tag_name # 远程删除名为tag_name的tag
|
|
||||||
```
|
|
||||||
|
|
||||||
## 差异比较相关
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git diff # 显示所有未添加至index的变更
|
|
||||||
git diff --cached # 显示所有已添加index但还未commit的变更
|
|
||||||
git diff HEAD^ # 比较与上一个版本的差异
|
|
||||||
git diff HEAD -- ./lib # 比较与HEAD版本lib目录的差异
|
|
||||||
git diff origin/master..master # 比较远程分支master上有本地分支master上没有的
|
|
||||||
git diff origin/master..master --stat # 只显示差异的文件,不显示具体内容
|
|
||||||
```
|
|
||||||
|
|
||||||
## 分支相关
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git clone git+ssh://git@xxx.xxx.xxx.xxx/xx.git # clone远程仓库
|
|
||||||
git remote add origin git+ssh://git@xxx.xxx.xxx.xxx/xx.git # 增加远程定义(用于push/pull/fetch)
|
|
||||||
git branch # 显示本地分支
|
|
||||||
git branch --contains 50089 # 显示包含提交50089的分支
|
|
||||||
git branch -a # 显示所有分支
|
|
||||||
git branch -r # 显示所有原创分支
|
|
||||||
git branch --merged # 显示所有已合并到当前分支的分支
|
|
||||||
git branch --no-merged # 显示所有未合并到当前分支的分支
|
|
||||||
git branch -m master master_copy # 本地分支改名
|
|
||||||
git checkout -b master_copy # 从当前分支创建新分支master_copy并检出
|
|
||||||
git checkout -b master master_copy # 上面的完整版
|
|
||||||
git checkout dev/minibear2333 # 检出已存在的分支
|
|
||||||
git checkout --track dev/minibear2333 # 检出远程分支dev/minibear2333并创建本地跟踪分支
|
|
||||||
git checkout v2.0 # 检出版本v2.0
|
|
||||||
git checkout -b devel origin/develop # 从远程分支develop创建新本地分支devel并检出
|
|
||||||
git checkout -- README # 检出head版本的README文件(可用于修改错误回退)
|
|
||||||
git merge origin/master # 合并远程master分支至当前分支
|
|
||||||
git cherry-pick xxxxxx # 合并提交xxxxxx的修改
|
|
||||||
git push origin master # 将当前分支push到远程master分支
|
|
||||||
git push origin :dev/minibear2333 # 删除远程仓库的dev/minibear2333分支
|
|
||||||
git fetch # 获取所有远程分支(不更新本地分支,另需merge)
|
|
||||||
git fetch --prune # 获取所有原创分支并清除服务器上已删掉的分支
|
|
||||||
git pull origin master # 获取远程分支master并merge到当前分支
|
|
||||||
git mv README README2 # 重命名文件README为README2
|
|
||||||
git reset --hard HEAD # 将当前版本重置为HEAD(通常用于merge失败回退)
|
|
||||||
git rebase
|
|
||||||
git branch -d dev/minibear2333 # 删除分支dev/minibear2333(需要确认本分支修改已合并到其他分支)
|
|
||||||
git branch -D dev/minibear2333 # 强制删除分支dev/minibear2333,小心操作
|
|
||||||
git ls-files # 列出git index包含的文件
|
|
||||||
git show-branch # 图示当前分支历史
|
|
||||||
git show-branch --all # 图示所有分支历史
|
|
||||||
```
|
|
||||||
|
|
||||||
## 图示命令
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git ls-tree HEAD # 内部命令:显示某个git对象
|
|
||||||
git rev-parse v2.0 # 内部命令:显示某个ref对于的SHA1 HASH
|
|
||||||
git reflog # 显示所有提交,包括孤立节点
|
|
||||||
git show xxx # 查看xxx提交改变了哪些文件内容
|
|
||||||
git show HEAD # 显示当前分支昨天的状态
|
|
||||||
git log --pretty=format:'%h %s' --graph # 图示提交日志
|
|
||||||
git show HEAD~3 # 查看倒数第三次提交改变了哪些内容
|
|
||||||
git show -s --pretty=raw xxxxxx
|
|
||||||
```
|
|
||||||
|
|
||||||
## 暂存相关
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git stash # 暂存当前修改,将所有至为HEAD状态
|
|
||||||
git stash list # 查看所有暂存
|
|
||||||
git stash show -p stash@{0} # 参考第一次暂存
|
|
||||||
git stash apply stash@{0} # 应用第一次暂存
|
|
||||||
```
|
|
||||||
|
|
||||||
## 查找
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git grep "delete from" # 查找当前分支下的文件内容,可以git grep --help看具体用法
|
|
||||||
git grep "delete from" v2.0 # 指定tag来查找
|
|
||||||
```
|
|
||||||
|
|
||||||
## git index 操作(追踪)
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git update-index —assume-unchanged 文件名 # 取消本地跟踪
|
|
||||||
git update-index —no-assume-unchanged 文件名 # 恢复本地跟踪
|
|
||||||
git ls-files -v| grep '^h\ ' # 可以看到本地不跟踪的文件
|
|
||||||
```
|
|
||||||
|
|
||||||
## 管理远程分支
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git remote # 不带参数,列出已经存在的远程分支
|
|
||||||
git remote -v #(-v是–verbose 的简写,取首字母)列出详细信息,在每一个名字后面列出其远程url
|
|
||||||
git remote add [shortname] url #添加远程仓库
|
|
||||||
git fetch origin # 字符串 origin 指代对应的仓库地址了.比如说,要抓取所有 origin 有的,但本地仓库没有的信息,可以用
|
|
||||||
```
|
|
||||||
|
|
||||||
## 打标签
|
|
||||||
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git tag #列出所有的标签
|
|
||||||
git tag -l "v1*" #支持模糊匹配:
|
|
||||||
git tag v2.3 #创建标签
|
|
||||||
git tag v2.4 -a -m "test" #创建轻量标签 `-a` 参数可以省略
|
|
||||||
git show v2.4 #查看附注标签
|
|
||||||
git tag -a v2.5 9fceb02 #历史提交打 `tag`
|
|
||||||
git push origin v1.0 #推送单个标签
|
|
||||||
git push origin --tags #推送全部标签
|
|
||||||
git tag -d v1.0 #删除标签
|
|
||||||
git push origin -- delete v1.0 #删除远程标签
|
|
||||||
git checkout v1.1 #检出标签到本地
|
|
||||||
git checkout -b v1.1-dev v1.1 #检出标签到分支
|
|
||||||
```
|
|
82
wiki/getting-started/Git/进阶/常用命令.md
Normal file
82
wiki/getting-started/Git/进阶/常用命令.md
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
---
|
||||||
|
title: 常用命令
|
||||||
|
description: Git 常用命令
|
||||||
|
keywords:
|
||||||
|
- Git
|
||||||
|
- 常用命令
|
||||||
|
tags:
|
||||||
|
- Git
|
||||||
|
sidebar_position: 4
|
||||||
|
author: 7Wate
|
||||||
|
date: 2022-09-13
|
||||||
|
---
|
||||||
|
|
||||||
|
## 创建版本库
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git clone <url> #克隆远程版本库
|
||||||
|
$ git init #初始化本地版本库
|
||||||
|
```
|
||||||
|
|
||||||
|
## 修改和提交
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git status #查看状态
|
||||||
|
$ git diff #查看变更内容
|
||||||
|
$ git add . #跟踪所有改动过的文件
|
||||||
|
$ git add <file> #跟踪指定的文件
|
||||||
|
$ git mv <old><new> #文件改名
|
||||||
|
$ git rm<file> #删除文件
|
||||||
|
$ git rm --cached<file> #停止跟踪文件但不删除
|
||||||
|
$ git commit -m "commit messages" #提交所有更新过的文件
|
||||||
|
$ git commit --amend #修改最后一次改动
|
||||||
|
```
|
||||||
|
|
||||||
|
## 查看提交历史
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git log #查看提交历史
|
||||||
|
$ git log -p <file> #查看指定文件的提交历史
|
||||||
|
$ git blame <file> #以列表方式查看指定文件的提交历史
|
||||||
|
```
|
||||||
|
|
||||||
|
## 撤销
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git reset --hard HEAD #撤销工作目录中所有未提交文件的修改内容
|
||||||
|
$ git checkout HEAD <file> #撤销指定的未提交文件的修改内容
|
||||||
|
$ git revert <commit> #撤销指定的提交
|
||||||
|
$ git log --before="1 days" #退回到之前 1天的版本
|
||||||
|
```
|
||||||
|
|
||||||
|
## 分支与标签
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git branch #显示所有本地分支
|
||||||
|
$ git checkout <branch/tag> #切换到指定分支和标签
|
||||||
|
$ git branch <new-branch> #创建新分支
|
||||||
|
$ git branch -d <branch> #删除本地分支
|
||||||
|
$ git tag #列出所有本地标签
|
||||||
|
$ git tag <tagname> #基于最新提交创建标签
|
||||||
|
$ git tag -d <tagname> #删除标签
|
||||||
|
```
|
||||||
|
|
||||||
|
## 合并与衍合
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git merge <branch> #合并指定分支到当前分支
|
||||||
|
$ git rebase <branch> #衍合指定分支到当前分支
|
||||||
|
```
|
||||||
|
|
||||||
|
## 远程操作
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git remote -v #查看远程版本库信息
|
||||||
|
$ git remote show <remote> #查看指定远程版本库信息
|
||||||
|
$ git remote add <remote> <url> #添加远程版本库
|
||||||
|
$ git fetch <remote> #从远程库获取代码
|
||||||
|
$ git pull <remote> <branch> #下载代码及快速合并
|
||||||
|
$ git push <remote> <branch> #上传代码及快速合并
|
||||||
|
$ git push <remote\> :<branch/tag-name\> #删除远程分支或标签
|
||||||
|
$ git push --tags #上传所有标签
|
||||||
|
```
|
@ -11,21 +11,40 @@ author: 7Wate
|
|||||||
date: 2022-09-13
|
date: 2022-09-13
|
||||||
---
|
---
|
||||||
|
|
||||||
## Git Config 配置
|
## Config 配置
|
||||||
|
|
||||||
Git 配置文件分为三级,系统级(--system)、用户级(--global)和目录级(--local),三者的使用优先级以离目录(repository)最近为原则,如果三者的配置不一样,则生效优先级 **目录级>用户级>系统级**。
|
Git 配置文件分为三级,系统级(--system)、用户级(--global)和目录级(--local),三者的使用优先级以离目录(repository)最近为原则,如果三者的配置不一样,则生效优先级 **目录级>用户级>系统级**。
|
||||||
|
|
||||||
1. **系统级**(/etc/gitconfig):使用 `git config --system user.name "7wate"` ,`git config --sytem user.email "admin@7wate.com"` 来进行配置,该配置**对系统上所有用户及他们所拥有的仓库都生效**的配置值。
|
1. **系统级**(/etc/gitconfig):使用 **--system** 来进行配置,该配置**对系统上所有用户及他们所拥有的仓库都生效**的配置值。
|
||||||
2. **用户级**(~/.gitconfig):使用 `git config --global user.name "7wate"` ,`git config --global user.email "admin@7wate.com"` 来进行配置,该配置**对当前用户上所有的仓库有效**。
|
|
||||||
3. **目录级**(.git/config):使用 `git config --local user.name "7wate"` , `git config --local user.email "admin@7wate.com"` 来进行配置,**只对当前仓库生效。**
|
|
||||||
|
|
||||||
## Git 设置默认分支
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git config --global init.defaultBranch <name>
|
git config --system user.name "用户名"
|
||||||
|
git config --system user.email "邮箱地址"`
|
||||||
```
|
```
|
||||||
|
|
||||||
## Git 多平台换行符问题(LF or CRLF)
|
2. **用户级**(~/.gitconfig):使用 **--global** 来进行配置,该配置**对当前用户上所有的仓库有效**。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
git config --global user.name "用户名"
|
||||||
|
git config --global user.email "邮箱地址"
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **目录级**(.git/config):使用 **--local** 来进行配置,**只对当前仓库生效。**
|
||||||
|
|
||||||
|
```shell
|
||||||
|
git config --local user.name "用户名"
|
||||||
|
git config --local user.email "邮箱地址"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 设置默认分支
|
||||||
|
|
||||||
|
可以根据需求设置为**系统级(--system)、用户级(--global)和目录级(--local)**。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
git config --global init.defaultBranch <分支名称>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 多平台换行符问题(LF or CRLF)
|
||||||
|
|
||||||
**文本文件所使用的换行符,在不同的系统平台上是不一样的。**UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是 0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF) 作为换行符。
|
**文本文件所使用的换行符,在不同的系统平台上是不一样的。**UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是 0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF) 作为换行符。
|
||||||
|
|
||||||
@ -51,7 +70,7 @@ git config --global core.autocrlf input
|
|||||||
git config --global core.safecrlf true
|
git config --global core.safecrlf true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Alias 重命名命令
|
## Alias 重命名别名
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git config --global alias.st status //status 缩写成 st
|
git config --global alias.st status //status 缩写成 st
|
||||||
@ -76,3 +95,60 @@ alias gp='git push'
|
|||||||
```
|
```
|
||||||
|
|
||||||
Git 常用命令,可以根据实际需要创建缩写命令。
|
Git 常用命令,可以根据实际需要创建缩写命令。
|
||||||
|
|
||||||
|
## GPG 签名提交
|
||||||
|
|
||||||
|
1. 生成 GPG 密钥对
|
||||||
|
|
||||||
|
```shell
|
||||||
|
// 1.1 创建 GPG 密钥
|
||||||
|
gpg --full-gen-key
|
||||||
|
|
||||||
|
// 1.2 列出 GPG 密钥
|
||||||
|
gpg --list-secret-keys --keyid-format LONG "your_email"
|
||||||
|
|
||||||
|
// 1.3 复制 GPG 密钥 ID,以下示例复制 4AEA00A342C24CA3。
|
||||||
|
sec ed25519/4AEA00A342C24CA3 2021-09-14 [SC]
|
||||||
|
6DE3507E82DEB6E8828FAAC34AEA00A342C24BD4
|
||||||
|
uid [ 绝对 ] your_name "your_email"
|
||||||
|
ssb cv25519/812B586FD245B560 2021-09-14 [E]
|
||||||
|
|
||||||
|
// 1.4 导出 GPG 公钥(以上述 ID 为例)
|
||||||
|
gpg --armor --export 4AEA00A342C24CA3
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 平台添加 GPG 公钥配置
|
||||||
|
|
||||||
|
将 GPG 公钥添加到 git 托管平台,例如 Github、Gitlab、Gitee 等。
|
||||||
|
|
||||||
|
3. 本地 Git 仓库关联 GPG 密钥
|
||||||
|
|
||||||
|
```shell
|
||||||
|
// 3.1 列出 GPG 密钥
|
||||||
|
gpg --list-secret-keys --keyid-format LONG "your_email"
|
||||||
|
|
||||||
|
// 3.2 复制 GPG 密钥 ID,以下示例复制 4AEA00A342C24CA3。
|
||||||
|
sec ed25519/4AEA00A342C24CA3 2021-09-14 [SC]
|
||||||
|
6DE3507E82DEB6E8828FAAC34AEA00A342C24BD4
|
||||||
|
uid [ 绝对 ] your_name "your_email"
|
||||||
|
ssb cv25519/812B586FD245B560 2021-09-14 [E]
|
||||||
|
|
||||||
|
// 3.3 本地 Git 仓库中配置该密钥,对 commit 提交进行签名。
|
||||||
|
git config --global user.signingkey 4AEA00A342C24CA3
|
||||||
|
```
|
||||||
|
|
||||||
|
4. 签名 Git commit
|
||||||
|
|
||||||
|
运行 Git commit 命令时需要用到 `-S` 参数,如果不希望每次都要输入 `-S` 标志,可以配置默认签名。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
// 签名提交
|
||||||
|
git commit -S -m "your_commit_message"
|
||||||
|
|
||||||
|
// 开启默认签名提交
|
||||||
|
git config --global commit.gpgsign true
|
||||||
|
```
|
||||||
|
|
||||||
|
5. 验证签名
|
||||||
|
|
||||||
|
最后可以推送签名提交到 git 托管平台,验证是否签名成功!
|
||||||
|
@ -11,14 +11,6 @@ author: 7Wate
|
|||||||
date: 2022-09-23
|
date: 2022-09-23
|
||||||
---
|
---
|
||||||
|
|
||||||
## 镜像站
|
|
||||||
|
|
||||||
| 域名 | https | 克隆加速 | zip 加速 | releases 加速 | 主机服务商 | 服务器所在地 |
|
|
||||||
| ---------------------------------------------------- | ----- | -------- | -------- | ------------- | ---------- | ------------ |
|
|
||||||
| [https://doc.fastgit.org](https://doc.fastgit.org/) | ✓ | ✓ | ✓ | ✓ | fastgit | 香港 |
|
|
||||||
| [https://hub.fastgit.xyz/](https://hub.fastgit.xyz/) | ✓ | ✓ | ✓ | ✓ | fastgit | 香港 |
|
|
||||||
| [https://gitclone.com](https://gitclone.com/) | ✓ | ✓ | ✗ | ✗ | Aliyun | 杭州 |
|
|
||||||
|
|
||||||
## 搜索
|
## 搜索
|
||||||
|
|
||||||
- 按 `s` 键直接聚焦倒搜索框输入
|
- 按 `s` 键直接聚焦倒搜索框输入
|
||||||
|
Loading…
Reference in New Issue
Block a user