Преглед на файлове

docs:初始化

master
suyu преди 3 седмици
родител
ревизия
f61d32b79b
променени са 1 файла, в които са добавени 592 реда и са изтрити 0 реда
  1. +592
    -0
      docs/SourceTree速成速查.md

+ 592
- 0
docs/SourceTree速成速查.md Целия файл

@@ -0,0 +1,592 @@
# SourceTree 速成速查

目的:快速掌握 Git 基础概念和 SourceTree 常用操作,能够完成基础学习中的代码管理考核。

## 1. Git 基础概念

### 1.1 Git 是什么

Git 是一个分布式版本控制工具,用来记录代码每一次修改,方便回退、对比、分支开发和多人协作。

一句话:

> Git 负责记录代码历史,SourceTree 是 Git 的图形化操作工具。

### 1.2 三个区域

| 区域 | 含义 | SourceTree 中的表现 |
| --- | --- | --- |
| 工作区 | 当前正在编辑的文件 | 未暂存文件 |
| 暂存区 | 准备提交的文件 | 已暂存文件 |
| 本地仓库 | 已经提交保存的历史记录 | History/日志中的提交节点 |

常用流程:

```text
修改文件 -> 暂存 -> 提交 -> 推送
```

### 1.3 仓库

仓库是 Git 管理代码历史的目录,里面有一个隐藏的 `.git` 文件夹。

- 本地仓库:自己电脑上的仓库。
- 远程仓库:服务器上的仓库,例如 Gitea、GitLab、GitHub。

注意:

> 不要手动删除 `.git` 文件夹,否则仓库历史会丢失。

### 1.4 节点

节点就是一次提交记录,也叫 commit。

每个节点通常包含:

- 修改内容。
- 提交人。
- 提交时间。
- 提交说明。
- 唯一提交号。

### 1.5 分支

分支是独立开发线,用于在不影响主线的情况下开发功能。

常见分支:

- `master/main`:主分支。
- `dev`:开发分支。
- `feature_xxx`:功能分支。

一句话:

> 分支用于并行开发,合并用于把一个分支的修改整合到另一个分支。

## 2. SourceTree 基础概念

SourceTree 是 Atlassian 提供的 Git 图形化工具,可以通过界面完成提交、分支、合并、拉取、推送、补丁、贮藏等操作。

常见区域:

| 区域 | 作用 |
| --- | --- |
| 文件状态 | 查看工作区和暂存区文件 |
| History/日志 | 查看提交节点历史 |
| 分支 | 查看和切换分支 |
| 远端 | 查看远程仓库分支 |
| 工具栏 | 提交、拉取、推送、获取、分支、合并等 |

## 3. 仓库相关操作

### 3.1 创建本地仓库

作用:把一个普通文件夹变成 Git 仓库。

操作:

1. 打开 SourceTree。
2. 点击 `创建`。
3. 选择本地路径。
4. 点击创建。

结果:

```text
目录中生成 .git 文件夹
```

### 3.2 打开本地仓库

作用:把已有 Git 仓库加入 SourceTree 管理。

操作:

1. 点击 `添加` 或 `打开`。
2. 选择本地仓库目录。
3. 打开后即可查看提交历史和文件状态。

### 3.3 克隆远程仓库

作用:第一次从远程仓库完整下载代码和历史。

操作:

1. 点击 `克隆`。
2. 填写远程仓库地址。
3. 选择本地保存路径。
4. 点击克隆。

一句话:

> 克隆是第一次把远程仓库完整复制到本地。

### 3.4 获取 Fetch

作用:只获取远程最新提交信息,不自动修改本地工作文件。

理解:

```text
Fetch = 看远程有没有新东西
```

适用场景:

- 想先看看远程有没有更新。
- 不想立刻合并到本地。

### 3.5 关联远程仓库

作用:让本地仓库知道要连接哪个远程仓库。

操作:

1. 打开仓库设置。
2. 添加远程仓库。
3. 名称通常写 `origin`。
4. URL 填远程仓库地址。

常用命令理解:

```bash
git remote add origin 仓库地址
```

## 4. 节点相关操作

### 4.1 提交 Commit

作用:把暂存区内容保存成一个提交节点。

操作:

1. 修改文件。
2. 在文件状态中勾选或点击暂存。
3. 写提交说明。
4. 点击提交。

提交说明建议:

```text
docs: update markdown note
fix: correct add function
feat: add login module
```

### 4.2 重置 Reset

作用:把当前分支指针移动到某个历史提交。

常见类型:

| 类型 | 含义 |
| --- | --- |
| Soft | 保留修改到暂存区 |
| Mixed | 保留修改到工作区 |
| Hard | 丢弃提交后的修改,风险最高 |

考核记忆:

> 重置是改变当前分支指向,Hard Reset 会丢修改,操作前要确认。

### 4.3 回滚提交 Revert

作用:生成一个新的反向提交,用来抵消某次提交。

示例:

```text
A -> B -> C
```

如果 B 有问题,对 B 执行回滚后:

```text
A -> B -> C -> D
```

D 是新的反向提交,用来撤销 B 的修改。

重置和回滚区别:

| 操作 | 是否新增提交 | 是否改历史 |
| --- | --- | --- |
| Reset | 不新增 | 会改变分支指针 |
| Revert | 新增反向提交 | 不破坏已有历史 |

## 5. 分支相关操作

### 5.1 新建分支

作用:从当前节点创建一条新的开发线。

操作:

1. 点击 `分支`。
2. 输入分支名,例如 `feature/add-calc`。
3. 点击创建。

### 5.2 切换分支

作用:切换到另一条开发线。

操作:

1. 在左侧分支列表选择目标分支。
2. 双击或右键检出。

注意:

> 如果当前工作区有未提交修改,切换分支可能失败,需要先提交、贮藏或丢弃。

### 5.3 合并分支

作用:把另一个分支的修改合并到当前分支。

操作:

1. 先切换到接收修改的分支,例如 `master`。
2. 点击 `合并`。
3. 选择要合并进来的分支。
4. 确认合并。

一句话:

> 站在哪个分支上执行合并,修改就合并到哪个分支。

### 5.4 删除分支

作用:删除不再需要的分支。

操作:

1. 右键目标分支。
2. 选择删除分支。

注意:

- 不要删除当前正在使用的分支。
- 删除前确认分支内容已经合并或不再需要。

### 5.5 制造冲突

冲突通常发生在两个分支修改了同一个文件的同一位置。

练习方式:

1. 在 `master` 修改 `README.md` 某一行并提交。
2. 在 `feature` 修改同一行并提交。
3. 切回 `master` 合并 `feature`。
4. 出现冲突。

### 5.6 解决冲突

操作:

1. 打开冲突文件。
2. 找到冲突标记。
3. 手动保留正确内容。
4. 删除冲突标记。
5. 标记为已解决。
6. 提交合并结果。

冲突标记示例:

```text
<<<<<<< HEAD
当前分支内容
=======
被合并分支内容
>>>>>>> feature
```

### 5.7 拉取 Pull

作用:获取远程更新并合并到当前分支。

理解:

```text
Pull = Fetch + Merge
```

适用场景:

- 同步远程最新代码。
- 推送前先确认本地不是落后的旧版本。

注意:

> 拉取不会无脑覆盖你的新代码。如果同一位置有冲突,需要你手动解决。

### 5.8 推送 Push

作用:把本地提交上传到远程仓库。

操作:

1. 本地完成提交。
2. 点击 `推送`。
3. 选择要推送的分支。
4. 确认推送。

注意:

- 没有提交的工作区修改不能直接推送。
- 本地落后远程时,通常需要先拉取或变基。

## 6. 其他常用操作

### 6.1 书写忽略文件

`.gitignore` 用于指定哪些文件不需要 Git 管理。

示例:

```gitignore
Debug/
Release/
*.obj
*.exe
*.log
.vs/
```

注意:

> `.gitignore` 只对未被跟踪的文件自动生效;已经提交过的文件需要停止跟踪。

### 6.2 停止跟踪

作用:文件已经被 Git 管理,后来不想继续让 Git 管理,但本地文件还保留。

命令理解:

```bash
git rm --cached 文件名
```

适用场景:

- 误把编译输出文件提交进仓库。
- 后来才把文件加入 `.gitignore`。

### 6.3 创建补丁方式一:工作区补丁

作用:把当前未提交修改导出成补丁文件。

适用场景:

- 不想提交,但想把修改发给别人。
- 想把当前修改临时保存成文件。

命令理解:

```bash
git diff > working-tree.patch
```

注意:

> 新建的未跟踪文件需要先暂存,普通工作区补丁才容易包含它。

### 6.4 创建补丁方式二:提交补丁

作用:把某次提交导出成补丁文件。

命令理解:

```bash
git format-patch -1 HEAD
```

特点:

- 会包含提交作者、时间、提交说明。
- 适合把某个提交发给别人应用。

### 6.5 应用补丁方式一:git apply

作用:只应用补丁里的文件修改,不自动生成提交。

命令理解:

```bash
git apply working-tree.patch
```

适用场景:

- 只想把别人改的内容应用到当前工作区。
- 应用后自己检查,再决定是否提交。

### 6.6 应用补丁方式二:git am

作用:应用 `format-patch` 生成的提交补丁,并尽量保留原提交信息。

命令理解:

```bash
git am 0001-xxx.patch
```

适用场景:

- 别人发来的是提交补丁。
- 希望保留原提交说明和作者信息。

补丁注意事项:

> 补丁不是完整文件,而是修改差异。应用补丁时,当前代码和补丁生成时的上下文要接近,否则可能失败或生成 `.rej` 文件。

### 6.7 贮藏 Stash

作用:临时保存当前未提交修改,让工作区变干净。

适用场景:

- 当前改了一半,需要临时切换分支。
- 不想提交半成品代码。

常见流程:

```text
贮藏 -> 切换分支处理事情 -> 回来应用贮藏
```

### 6.8 丢弃 Discard

作用:丢弃工作区未提交修改。

注意:

> 丢弃后修改通常很难找回,操作前确认不要这些改动。

适用场景:

- 文件改错了,想恢复到上一次提交状态。
- 临时调试内容不需要保留。

### 6.9 移除 Remove

作用:从仓库中删除文件。

区别:

| 操作 | 含义 |
| --- | --- |
| 丢弃 | 放弃未提交修改 |
| 移除 | 删除文件并让 Git 记录删除 |
| 停止跟踪 | Git 不再管理文件,但本地保留 |

### 6.10 创建标签 Tag

作用:给某个提交节点打一个固定标记。

适用场景:

- 标记版本发布。
- 标记验收节点。

示例:

```text
v1.0
basic-learn-done
```

### 6.11 删除标签

作用:删除不再需要或打错的标签。

注意:

- 本地标签和远程标签可能需要分别删除。
- 删除前确认标签不再需要。

## 7. 附加知识点

### 7.1 变基 Rebase

作用:把当前分支的提交移动到另一个分支最新提交之后,让提交历史更直。

示例:

```text
合并 Merge:保留分叉和合并节点
变基 Rebase:把提交重新排列到最新节点后面
```

适用场景:

- 本地功能分支想基于最新主分支继续开发。
- 希望提交历史更整洁。

注意:

> 不要随便对已经推送并被别人使用的公共分支做 rebase,容易影响别人历史。

## 8. 综合最终状态

完成一系列操作后,理想状态是:

- 工作区干净,没有未提交修改。
- 当前分支清楚,例如在 `master` 或 `dev`。
- 本地提交已经按要求完成。
- 远程仓库已经同步最新提交。
- 冲突已经解决。
- 不需要的临时文件已经忽略或停止跟踪。
- 标签、补丁、贮藏等操作能说明用途和区别。

## 9. SourceTree 常用快捷键

说明:SourceTree 不同版本和系统快捷键可能略有差异,实际以菜单栏显示为准。Windows 中常见规律是 `Ctrl` 对应 macOS 的 `Cmd`。

| 功能 | 常用快捷键 | 说明 |
| --- | --- | --- |
| 新建/克隆仓库 | `Ctrl + N` | 打开新建或克隆相关入口,具体以版本为准 |
| 打开仓库 | `Ctrl + O` | 打开已有本地仓库 |
| 查找 | `Ctrl + F` | 在当前视图中搜索提交、文件或内容 |
| 刷新 | `F5` | 刷新当前仓库状态 |
| 提交 | `Ctrl + Enter` | 在提交界面中提交已暂存内容,部分版本支持 |
| 全选文本 | `Ctrl + A` | 编辑提交说明或文本时全选 |
| 复制 | `Ctrl + C` | 复制选中内容,例如提交号、文本 |
| 粘贴 | `Ctrl + V` | 粘贴文本,例如提交说明 |
| 剪切 | `Ctrl + X` | 剪切文本 |
| 撤销文本输入 | `Ctrl + Z` | 撤销提交说明等文本输入 |
| 重做文本输入 | `Ctrl + Y` | 恢复撤销的文本输入 |
| 切换标签页 | `Ctrl + Tab` | 多仓库标签页之间切换,部分版本支持 |
| 关闭当前标签页 | `Ctrl + W` | 关闭当前仓库标签页,部分版本支持 |

更稳的考核记法:

- SourceTree 主要考操作流程,不主要考快捷键。
- 真实快捷键可以看菜单栏右侧显示。
- 不确定快捷键时,直接使用工具栏按钮和右键菜单完成操作。

## 10. 考核速记口诀

- Git:记录代码历史。
- SourceTree:Git 图形化工具。
- 工作区:正在改。
- 暂存区:准备提交。
- 本地仓库:已经提交。
- Fetch:只获取远程信息。
- Pull:获取并合并。
- Push:上传本地提交。
- Commit:生成提交节点。
- Reset:移动分支指针。
- Revert:新增反向提交。
- Branch:分支开发。
- Merge:合并分支。
- Stash:临时保存未提交修改。
- Discard:丢弃未提交修改。
- Stop Tracking:停止跟踪但本地保留。
- Patch:保存或传递修改差异。
- Tag:给提交节点打版本标记。

## 11. 资料来源

- Atlassian SourceTree 文档:https://confluence.atlassian.com/get-started-with-sourcetree
- Atlassian Git 教程:https://www.atlassian.com/git/tutorials

Зареждане…
Отказ
Запис