From f61d32b79b8877df3f91f34a1a5772cc22bfd3fb Mon Sep 17 00:00:00 2001 From: suyu <1643689728@qq.com> Date: Mon, 13 Jul 2026 10:51:01 +0800 Subject: [PATCH] =?UTF-8?q?docs=EF=BC=9A=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/SourceTree速成速查.md | 592 +++++++++++++++++++++++++++++++++ 1 file changed, 592 insertions(+) create mode 100644 docs/SourceTree速成速查.md diff --git a/docs/SourceTree速成速查.md b/docs/SourceTree速成速查.md new file mode 100644 index 0000000..1a7f0f5 --- /dev/null +++ b/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