Skip to content

Commit ec28b47

Browse files
authored
Merge pull request #43 from lurenjia1213/main
docs:Add git basic configuration and staging area
2 parents ab9c7cd + 49c1f2f commit ec28b47

File tree

3 files changed

+325
-0
lines changed

3 files changed

+325
-0
lines changed
Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
1+
# Git 基础配置
2+
3+
> 让学生掌握 Git 的基本配置与命令。
4+
5+
---
6+
7+
## 1。配置 Git
8+
9+
在使用 Git 之前,首先需要进行一些基本的配置,包括设置用户名和邮箱。这些信息会与每次提交(Commit)关联,用于标识代码的贡献者。
10+
11+
### 配置用户名和邮箱
12+
13+
- **命令**
14+
15+
```bash
16+
git config --global user.name "你的用户名"
17+
git config --global user.email "你的邮箱"
18+
```
19+
20+
- **作用**
21+
- `user.name`:设置提交代码时显示的作者名称。
22+
- `user.email`:设置提交代码时显示的作者邮箱。
23+
- `--global`:表示全局配置,适用于当前用户的所有仓库。如果只想为某个仓库单独配置,可以去掉 `--global` 参数。
24+
- **提示**
25+
- 有些时候,你不想让自己的邮箱与这个 git 用户有关联,可以使用 GitHub 等平台提供的隐私邮箱
26+
27+
### 查看配置信息
28+
29+
- **命令**
30+
31+
```bash
32+
git config --list
33+
```
34+
35+
- **作用**:查看当前 Git 的所有配置信息,包括用户名、邮箱等。
36+
37+
### 查看帮助
38+
39+
- **比如我想看看 merge 是个什么玩意**
40+
41+
```bash
42+
git help merge
43+
git merge --help
44+
man git-merge
45+
```
46+
47+
---
48+
49+
## 2。使用 SSH 连接远程仓库
50+
51+
SSH(Secure Shell)是一种加密的网络协议,用于安全地访问远程服务器。通过 SSH 连接 Git 远程仓库,可以避免每次操作时输入用户名和密码,同时提高数据传输的安全性。
52+
53+
### 生成 SSH 密钥
54+
55+
1. **检查是否已有 SSH 密钥**
56+
57+
打开终端,输入以下命令:
58+
59+
```bash
60+
ls ~/.ssh/
61+
```
62+
63+
如果文件存在,说明已有 SSH 密钥,可以跳过生成步骤。
64+
65+
2. **生成新的 SSH 密钥**
66+
67+
如果不存在 SSH 密钥,可以使用以下命令生成:
68+
69+
```bash
70+
ssh-keygen -t ed25519 -C "你的邮箱"
71+
```
72+
73+
按提示选择保存路径和设置密码(可选)。
74+
75+
生成成功后,会在 `~/.ssh/` 目录下生成两个文件:
76+
77+
- `id_ed25519`:私钥,切勿泄露。
78+
79+
- `id_ed25519.pub`:公钥,用于添加到远程仓库。
80+
81+
3. **添加到 ssh-agent**
82+
83+
```bash
84+
eval "$(ssh-agent -s)"
85+
ssh-add ~/.ssh/id_ed25519
86+
```
87+
88+
### 添加 SSH 密钥到远程仓库
89+
90+
1. **复制公钥**
91+
92+
使用以下命令复制公钥内容:
93+
94+
```bash
95+
cat ~/.ssh/id_ed25519.pub
96+
```
97+
98+
复制输出的全部内容。
99+
100+
2. **添加到 GitHub**
101+
102+
登录 GitHub,进入 **Settings** -> **SSH and GPG keys**
103+
104+
点击 **New SSH key**,将复制的公钥粘贴到 Key 字段中,设置标题并保存。
105+
106+
### 测试 SSH 连接
107+
108+
- 使用以下命令测试 SSH 连接是否成功:
109+
110+
```bash
111+
112+
```
113+
114+
- 如果显示 `Hi 用户名! You've successfully authenticated ...`,说明 SSH 配置成功。
115+
116+
### 使用 SSH 克隆仓库
117+
118+
- 使用 SSH 地址克隆远程仓库:
119+
120+
```bash
121+
git clone [email protected]:用户名/仓库名.git
122+
```
123+
124+
### 将现有仓库切换为 SSH 连接
125+
126+
- 如果已经使用 HTTPS 克隆了仓库,可以通过以下命令切换为 SSH:
127+
128+
```bash
129+
git remote set-url origin [email protected]:用户名/仓库名.git
130+
```
131+
132+
- 使用 `git remote -v` 查看远程仓库地址,确认是否切换成功。
133+
134+
- 如果你的网络环境比较特殊,可以修改 ssh 配置 (~/.ssh/config)
135+
136+
```bash
137+
Host github.com
138+
Hostname ssh.github.com
139+
Port 443 #如果你的网络环境不允许使用22端口进行连接
140+
User git
141+
ProxyCommand nc -v -x 127.0.0.1:10808 %h %p #如果需要使用代理才能访问互联网
142+
```
143+
144+
---
145+
146+
## 3。Git 最为基础的命令
147+
148+
以下是 Git 中最基础且常用的命令,掌握这些命令是使用 Git 进行版本控制的第一步。
149+
150+
### 初始化仓库(`git init`)
151+
152+
- **命令**:
153+
154+
```bash
155+
git init
156+
```
157+
158+
- **作用**:在当前目录中创建一个新的 Git 仓库。执行该命令后,Git 会在当前目录下生成一个隐藏的 `.git` 文件夹,用于存储版本控制所需的元数据和对象。
159+
- **使用场景**:当你需要从头开始创建一个新项目时,可以使用 `git init` 初始化仓库。
160+
161+
### 克隆远程仓库(`git clone`)
162+
163+
- **命令**:
164+
165+
```bash
166+
git clone <远程仓库地址>
167+
```
168+
169+
- **作用**:从远程服务器(如 GitHub、Gitee 等)克隆一个已有的仓库到本地。克隆操作会将远程仓库的所有文件、分支和历史记录复制到本地。
170+
- **示例**:
171+
172+
```bash
173+
git clone https://github.com/example/project.git
174+
```
175+
176+
- **使用场景**:当你需要参与一个已有的项目时,可以使用 `git clone` 将项目代码下载到本地。
177+
178+
### 查看仓库状态(`git status`)
179+
180+
- **命令**:
181+
182+
```bash
183+
git status
184+
```
185+
186+
- **作用**:查看当前仓库的状态,包括哪些文件被修改、哪些文件已暂存(Staged)、哪些文件未跟踪(Untracked)等。
187+
- **输出示例**:
188+
189+
```plaintext
190+
On branch main
191+
Changes not staged for commit:
192+
(use "git add <file>..." to update what will be committed)
193+
(use "git restore <file>..." to discard changes in working directory)
194+
modified: README.md
195+
196+
Untracked files:
197+
(use "git add <file>..." to include in what will be committed)
198+
new-file.txt
199+
200+
no changes added to commit (use "git add" and/or "git commit -a")
201+
```
202+
203+
- **使用场景**:在提交代码之前,使用 `git status` 检查当前工作目录的状态,确保没有遗漏或误操作。
204+
205+
---
206+
207+
## 总结
208+
209+
1. 如何配置 Git 的用户名和邮箱,以便正确标识代码贡献者。
210+
2. 如何使用 `git init` 初始化一个新的 Git 仓库。
211+
3. 如何使用 `git clone` 克隆远程仓库到本地。
212+
4. 如何使用 `git status` 查看仓库的当前状态。

docs/ch3/sec1/subsec2/2-staging.md

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
# Git 暂存区
2+
3+
## 目的
4+
5+
本节旨在帮助学生理解 Git 暂存区的作用,并掌握 `git add` 等基础命令
6+
7+
---
8+
9+
## 内容
10+
11+
### 1。Git 暂存区的作用
12+
13+
#### 什么是暂存区?
14+
15+
- **定义**:暂存区(Staging Area)是 Git 中一个临时存储区域,用于保存即将提交的更改。
16+
- **作用**:允许开发者选择性地将修改的文件添加到暂存区,而不是一次性提交所有更改。
17+
18+
#### 工作流程
19+
20+
1. **工作目录**:开发者对项目文件进行修改。
21+
2. **暂存区**:使用 `git add` 将修改的文件添加到暂存区。
22+
3. **本地仓库**:使用 `git commit` 将暂存区的内容提交到本地仓库。
23+
24+
---
25+
26+
### 2。修改暂存区
27+
28+
`git add` 是 Git 中用于将工作目录中的修改添加到暂存区的命令。以下是 `git add` 的常见用法:
29+
30+
#### 添加文件
31+
32+
**命令**
33+
34+
```bash
35+
git add <文件1> <文件2>
36+
```
37+
38+
**作用**:将文件(如 `file1.txt``file2.txt`)添加到暂存区。
39+
40+
#### 添加某个目录下的所有修改
41+
42+
**命令**
43+
44+
```bash
45+
git add <目录名>/
46+
```
47+
48+
**作用**:将指定目录(如 `src/`)下的所有修改添加到暂存区。
49+
50+
如果你使用的是
51+
52+
```bash
53+
git .
54+
```
55+
56+
那么将把当前所在目录的所有文件添加进暂存区
57+
58+
???+ tip “小提示”
59+
可以把构建产物的文件路径加入 `.gitignore` 文件中,避免被错误加入暂存区
60+
61+
#### 交互式添加
62+
63+
**命令**
64+
65+
```bash
66+
git add -p
67+
```
68+
69+
**作用**:进入交互模式,逐块(hunk)选择要添加到暂存区的修改。Git 会显示每个修改块,并提示是否将其添加到暂存区。
70+
**使用场景**:当需要对修改进行精细控制时,可以使用交互式添加。
71+
72+
??? tip “类比一下”
73+
git rm,git mv 的用法与 git add 差不多
74+
75+
---
76+
77+
### 3。撤销暂存区的修改
78+
79+
如果误将某些修改添加到暂存区,可以使用以下命令将其撤销:
80+
81+
#### 撤销单个文件的暂存
82+
83+
**命令**
84+
85+
```bash
86+
git restore --staged <文件名>
87+
```
88+
89+
**示例**
90+
91+
```bash
92+
git restore --staged README.md
93+
```
94+
95+
**作用**:将指定文件(如 `README.md`)从暂存区移回工作目录。
96+
97+
#### 撤销所有暂存的修改
98+
99+
**命令**
100+
101+
```bash
102+
git restore --staged .
103+
```
104+
105+
**作用**:将所有暂存的文件移回工作目录。
106+
107+
## 总结
108+
109+
通过本节的学习,学生应掌握以下内容:
110+
111+
1. **暂存区的基础操作**

mkdocs.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ nav:
9999
- 创建并管理仓库: ch3/sec1/subsec1/4-create-repo.md
100100
- 开源许可证选择指南: ch3/sec1/subsec1/5-open_source_License.md
101101
- 基础阶段:
102+
- Git的基础配置: ch3/sec1/subsec2/1-basic-configuration.md
103+
- 暂存区操作: ch3/sec1/subsec2/2-staging.md
102104
- 如何写好一个commit message: ch3/sec1/subsec2/6-commit-message.md
103105
- 专业阶段:
104106
- Git Rebase与Git Merge的使用与区别: ch3/sec1/subsec3/1-rebase-merge.md

0 commit comments

Comments
 (0)