Skip to content

Commit 967b4b5

Browse files
committed
docs(git): add base
1 parent b37ba05 commit 967b4b5

File tree

12 files changed

+764
-1
lines changed

12 files changed

+764
-1
lines changed

docs/git/base/git-config.md

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
2+
# [git config]配置
3+
4+
## 命令行操作范围
5+
6+
使用命令`git config`进行配置,各级别设置需要加上可选参数
7+
8+
# 系统级别
9+
git config --system ...
10+
# 全局级别
11+
git config --global ...
12+
# 仓库级别
13+
git config --local ...
14+
15+
### 打印配置信息
16+
17+
* 获取配置信息
18+
19+
```
20+
$ git config --list
21+
user.name=xxx
22+
user.email=xxx@163.com
23+
core.editor=code
24+
http.postbuffer=1048576000
25+
core.repositoryformatversion=0
26+
core.filemode=true
27+
core.bare=false
28+
core.logallrefupdates=true
29+
remote.origin.url=git@github.com:ZJDoc/GitGuide.git
30+
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
31+
branch.master.remote=origin
32+
branch.master.merge=refs/heads/master
33+
```
34+
35+
* 获取全局配置信息
36+
37+
```
38+
$ git config --global --list
39+
user.name=xxx
40+
user.email=xxx@163.com
41+
core.editor=code
42+
http.postbuffer=1048576000
43+
```
44+
45+
* 获取本地配置信息
46+
47+
```
48+
$ git config --local --list
49+
core.repositoryformatversion=0
50+
core.filemode=true
51+
core.bare=false
52+
core.logallrefupdates=true
53+
remote.origin.url=git@github.com:ZJDoc/GitGuide.git
54+
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
55+
branch.master.remote=origin
56+
branch.master.merge=refs/heads/master
57+
```
58+
59+
**注意:需要进入一个`Git`仓库才能获取本地信息**
60+
61+
## 常用设置
62+
63+
1. 设置用户信息
64+
2. 设置文本编辑器
65+
3. 移除变量
66+
67+
### 设置用户信息
68+
69+
每次提交时都需加上用户名和邮箱地址,可以设置成全局变量
70+
71+
git config --global user.name user-name
72+
git config --global user.email email-address
73+
74+
*设置节点为`user`,设置属性为`name``email`*
75+
76+
也可以在仓库中设置本地用户名和用户邮箱:
77+
78+
```
79+
$ git config --local user.name xxx
80+
$ git config --local user.email xxx
81+
```
82+
83+
### 设置文本编辑器
84+
85+
`git`使用系统默认的编辑器,可以设置指定编辑器
86+
87+
# 未设置
88+
git config --global core.editor vim
89+
# 已设置,先删除再添加
90+
git config --global --unset core.editor
91+
git config --global core.editor vim
92+
93+
### 移除变量
94+
95+
# 移除单个变量
96+
git config --global --unset 属性名
97+
# 移除所有变量
98+
git config --global --unset-all 属性名
99+
100+
## 配置文件地址
101+
102+
`git``3`个级别的配置文件:
103+
104+
1. `local`:本地文件存放在仓库中(`.git/config`),只针对当前仓库
105+
2. `global`:全局文件存放为`~/.gitconfig``~/.config/git/config`,作用于当前用户的所有仓库
106+
3. `system`:系统文件存放为`/etc/gitconfig`,作用于系统的每个用户
107+
108+
其优先级为`local > global > system`
109+
110+
*`windows`环境下的全局配置文件存放为`C:\\User\\$USER\\.gitconfig`*
111+
112+
### 编写格式
113+
114+
所有配置文件的编写格式都一样,可参考仓库级别的`config`文件,按照*section和key*进行配置
115+
116+
# 仓库级别
117+
$ cat config
118+
[core]
119+
repositoryformatversion = 0
120+
filemode = true
121+
bare = false
122+
logallrefupdates = true
123+
[remote "origin"]
124+
url = git@github.com:zjZSTU/linux-guide.git
125+
fetch = +refs/heads/*:refs/remotes/origin/*
126+
[branch "master"]
127+
remote = origin
128+
merge = refs/heads/master
129+
# 全局级别
130+
$ cat .gitconfig
131+
[user]
132+
name = zxxx
133+
email = 50xxxxx.com

docs/git/base/git-log.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
2+
# [git log]日志查询
3+
4+
使用命令`git log`查询日志,包含了多种快捷查询方式
5+
6+
1. 最简单查询
7+
8+
```
9+
$ git log
10+
```
11+
12+
2. 单行输出
13+
14+
```
15+
$ git log --oneline
16+
```
17+
18+
3. 指定关键字查询
19+
20+
```
21+
$ git log --grep 关键字
22+
```
23+
24+
4. 指定作者查询
25+
26+
```
27+
$ git log --author 作者
28+
```
29+
30+
**注意:上述属性可以组合使用,比如指定关键字和作者并单行输出**

docs/git/base/gitkeep.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
# .gitkeep
3+
4+
文件`.gitkeep`是一个占位符
5+
6+
>git无法追踪一个空的文件夹,当用户需要追踪(track)一个空的文件夹的时候,按照惯例,大家会把一个称为.gitkeep的文件放在这些文件夹里。
7+
8+
## 相关阅读
9+
10+
* [.gitkeep](https://www.jianshu.com/p/2507dfdb35d8)
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
2+
# [ssh][http]传输方式切换
3+
4+
通过修改本地文件,切换代码传输方式
5+
6+
## 命令修改
7+
8+
查看当前使用`SSH`还是`HTTP`
9+
10+
$ git remote -v
11+
origin git@gitee.com:zjZSTU/zjzstu.gitee.io.git (fetch)
12+
origin git@gitee.com:zjZSTU/zjzstu.gitee.io.git (push)
13+
14+
当前使用`SSH`协议进行代码拉取和推送
15+
16+
方式一:仅修改拉取协议为`HTTP`
17+
18+
$ git remote set-url --push origin https://gitee.com/zjZSTU/zjzstu.gitee.io.git
19+
$ git remote -v
20+
origin git@gitee.com:zjZSTU/zjzstu.gitee.io.git (fetch)
21+
origin https://gitee.com/zjZSTU/zjzstu.gitee.io.git (push)
22+
23+
方式二:同时修改拉取和推送协议为`HTTP`
24+
25+
# 先增加HTTP
26+
$ git remote set-url --add origin https://gitee.com/zjZSTU/zjzstu.gitee.io.git
27+
$ git remote -v
28+
origin git@gitee.com:zjZSTU/zjzstu.gitee.io.git (fetch)
29+
origin https://gitee.com/zjZSTU/zjzstu.gitee.io.git (push)
30+
# 再删除SSH
31+
$ git remote set-url --delete origin git@gitee.com:zjZSTU/zjzstu.gitee.io.git
32+
$ git remote -v
33+
origin https://gitee.com/zjZSTU/zjzstu.gitee.io.git (fetch)
34+
origin https://gitee.com/zjZSTU/zjzstu.gitee.io.git (push)
35+
36+
## 文件修改
37+
38+
修改文件`.git/config``remote`小节
39+
40+
[core]
41+
repositoryformatversion = 0
42+
filemode = true
43+
bare = false
44+
logallrefupdates = true
45+
[remote "origin"]
46+
fetch = +refs/heads/*:refs/remotes/origin/*
47+
url = git@gitee.com:zjZSTU/zjzstu.gitee.io.git
48+
[branch "master"]
49+
remote = origin
50+
merge = refs/heads/master
51+
[branch "dev"]
52+
remote = origin
53+
merge = refs/heads/dev
54+
55+
方式一:仅修改拉取协议为`HTTP`
56+
57+
添加`pushurl = ...``remote`小节
58+
59+
...
60+
[remote "origin"]
61+
fetch = +refs/heads/*:refs/remotes/origin/*
62+
url = git@gitee.com:zjZSTU/zjzstu.gitee.io.git
63+
pushurl = https://gitee.com/zjZSTU/zjzstu.gitee.io.git
64+
[branch "master"]
65+
...
66+
67+
方式二:同时修改拉取和推送协议为`HTTP`
68+
69+
修改`url``HTTP`即可
70+
71+
...
72+
[remote "origin"]
73+
fetch = +refs/heads/*:refs/remotes/origin/*
74+
url = https://gitee.com/zjZSTU/zjzstu.gitee.io.git
75+
...
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
2+
# 关于版本控制
3+
4+
## 简介
5+
6+
版本控制(`version control`),或称为修订控制(`revision control`)、源控制(`source control`),其作用是保存源代码、配置文件和工程文件的修改历史,保证开发人员能够定位错误、回滚版本
7+
8+
大致经历`3`个阶段:
9+
10+
1. 保存副本
11+
2. 集中式修订控制(`centralized revision control`)
12+
3. 分布式修订控制(`distributed revision control`)
13+
14+
最简单的版本控制方式就是备份每次修改后的文件,优点在于操作简单,缺点在于占用存储大,在大文件情况下非常耗时,也不利于多人同时开发
15+
16+
第二和第三种方式都是通过保存文件修改记录来进行版本控制
17+
18+
第二种是集中式修订控制,即设立服务器来保存源代码和所有人修改的记录,上传和回滚版本通过服务器进行
19+
20+
优点在于这样可以保证占用的存储大大减小,同时仅需上传和下载修改记录就能够进行版本上传和更新,减小操作时间,并且能够有效协调地理隔离下的多人开发;管理员能控制开发人员权限
21+
22+
缺点在于仅在中央服务器保存了所有的修改记录,一旦损坏无法修复; 无法在同一版本库中同时进行多方向开发
23+
24+
![](https://git-scm.com/book/en/v2/images/centralized.png)
25+
26+
第三种是分布式修订控制,同一个开发库可以进行多分支开发,客户端也保存了所有分支的修改记录
27+
28+
优点:多分支开发;相比于集中式修订控制,仅需在拉取其他开发人员的变更和自己的提交记录时需要连接服务器,所以一些常用操作更加快捷,比如提交记录,浏览历史和回退操作
29+
30+
缺点:增加了客户端开发库的体积;操作较复杂
31+
32+
![](https://git-scm.com/book/en/v2/images/distributed.png)
33+
34+
使用集中式修订控制方式的版本控制系统:`svn`
35+
36+
使用分布式修订控制方式的版本控制系统:`git`
37+
38+
## 相关阅读
39+
40+
* [Version control](https://en.wikipedia.org/wiki/Version_control)

0 commit comments

Comments
 (0)