|
|
@@ -47,12 +47,44 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
### 仓库相关操作 |
|
|
|
|
|
|
|
#### **创建本地仓库** |
|
|
|
#### **创建本地仓库**(修改) |
|
|
|
|
|
|
|
1. 有文件夹创建新文件 |
|
|
|
|
|
|
|
***在浏览里面选择我们要创建本地仓库的文件夹。*** |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
点击是 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
创建成功 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
浏览里面选择要创建仓库的文件夹,即可以在该文件夹建立一个仓库,生成.git文件。 |
|
|
|
|
|
|
|
2. 没有文件夹创建本地仓库 |
|
|
|
|
|
|
|
- 选择路径 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
- 桌面出现文件夹 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
- 仓库建立成功 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### **打开本地仓库** |
|
|
|
|
|
|
|
 |
|
|
@@ -61,7 +93,7 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### **克隆远程仓库** |
|
|
|
#### **克隆远程仓库**(修改) |
|
|
|
|
|
|
|
**获取URL:http://gitea.xinje.cc/wangshunkui/kong.git** |
|
|
|
|
|
|
@@ -69,8 +101,24 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
**克隆** |
|
|
|
|
|
|
|
- 填写URL地址和Clone到的空文件夹 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
- 远端的内容 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
- 点击克隆 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
- 实现结果 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### **获取** |
|
|
|
|
|
|
|
**获取是从远程仓库获取信息并同步至本地仓库(获取只会同步到本地仓库,不会更改工作文件)** |
|
|
@@ -87,23 +135,59 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
注意:步骤四自己对远端电脑随便取个名就行。 |
|
|
|
|
|
|
|
在 `SourceTree` 中,**克隆远程仓库**是指从远程 Git 仓库中下载完整的项目代码和提交历史,创建一个新的本地项目副本;而**关联远程仓库**是指在本地已存在的 Git 仓库中,添加一个远程仓库地址,以便将本地代码推送到远程或从远程拉取更新。两者的主要区别在于:克隆用于从远程获取项目,自动建立关联并初始化本地项目;而关联远程用于让已有的本地项目与远程仓库建立联系,通常用于首次推送代码。 |
|
|
|
|
|
|
|
### **节点相关操作** |
|
|
|
|
|
|
|
#### **提交** |
|
|
|
|
|
|
|
将工作区的内容放到仓库的这个过程叫做提交。将写完后的文档先添加到暂存区,然后再写日志提交。每一次提交产生一个节点。 |
|
|
|
|
|
|
|
#### 回滚提交 |
|
|
|
#### 回滚提交(修改) |
|
|
|
|
|
|
|
“回滚提交”指的是对 Git 历史中的某个提交进行撤销、修改或恢复的操作。常见的回滚行为包括: |
|
|
|
|
|
|
|
- **撤销最近的提交** |
|
|
|
|
|
|
|
- **恢复到某个旧的提交版本** |
|
|
|
|
|
|
|
- **撤销某一次错误的提交(保留历史)** |
|
|
|
|
|
|
|
回滚提交多步时候会产生冲突,所以这时候需要我们去解决冲突。 |
|
|
|
- 回滚前 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
- 回滚后 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 回滚的回滚 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
- 回滚到第一次回滚的回滚 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
- 回滚多部操作 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
产生冲突,需要去解决冲突 |
|
|
|
|
|
|
|
#### **重置当前分支到此次提交** |
|
|
|
|
|
|
@@ -111,19 +195,37 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### Source Tree三种合并和区别 |
|
|
|
- |
|
|
|
|
|
|
|
#### Source Tree三种合并和区别(修改) |
|
|
|
|
|
|
|
混合合并: |
|
|
|
|
|
|
|
是指将此次提交回滚到指定的位置,但这个过程中不会将修改过的文件暂存到暂存区,而是将修改过的文件存放在未暂存文件区。 |
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
混合合并以后文件文件保存到了未暂存区,提供一次修改机会。 |
|
|
|
|
|
|
|
强行合并: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
是指将此次提交回滚到指定的位置,但这个过程中将直接丢弃之前修改的所有文件。 |
|
|
|
|
|
|
|
软合并: |
|
|
|
|
|
|
|
软合并是指将此次提交回滚到指定提交位置,但这个过程中会将修改过的文件暂存到暂存区。 |
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
软合并之后,文件保存到暂存区,给一次修改机会。 |
|
|
|
|
|
|
|
### **分支相关操作** |
|
|
|
|
|
|
@@ -133,29 +235,52 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### **合并分支** |
|
|
|
#### **合并分支**(修改) |
|
|
|
|
|
|
|
激活master,选择要合并的支线,点击确定,将支线的所有变化的节点打包创建一个新节点合并过去。 |
|
|
|
|
|
|
|
1. 切换到**目标分支**(如 `master`) |
|
|
|
|
|
|
|
2. 点击上方菜单栏的:**分支 → 合并(Merge)** |
|
|
|
|
|
|
|
3. 在弹窗中选择你要合并进来的源分支(如 `dev1`) |
|
|
|
|
|
|
|
4. 点击“确定”开始合并 |
|
|
|
|
|
|
|
5. 如果有冲突,会提示你处理冲突 |
|
|
|
|
|
|
|
6. 处理完冲突后,**提交合并记录** |
|
|
|
|
|
|
|
##### 分支合并到主分支 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### **删除分支** |
|
|
|
|
|
|
|
|
|
|
|
##### 分支1合并到分支2 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
解决冲突 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
合并成功 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
##### 分支的分支合并到主分支 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
合并成功 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### **删除分支**(修改) |
|
|
|
|
|
|
|
1. **切换出要删除的分支,你不能删除当前正在使用的分支。请先切换到其他分支**。 |
|
|
|
2. 在左侧分支列表中,**右键你要删除的分支** |
|
|
@@ -164,21 +289,75 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
**注意尚未合并的分支不能删除(即没有备份的分支)** |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
强行删除没有合并的分支 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
因为分支没有和主分支合并,所以删除失败 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### **切换分支** |
|
|
|
 |
|
|
|
|
|
|
|
## 适用场景和意义 |
|
|
|
|
|
|
|
| 场景 | 意义 | |
|
|
|
| -------------------------- | ------------------------------------------------------------ | |
|
|
|
| 🔁 **分支内容无用** | 某个分支用于试验、测试,最终未采用,强行删除避免冗余。 | |
|
|
|
| 🧹 **清理历史** | 清理长期未合并、开发中断的“僵尸分支”。 | |
|
|
|
| 🚫 **修复误操作** | 某分支是误建的,未提交或提交错误,无法 merge,不如直接强制删除。 | |
|
|
|
| 🔒 **防止危险代码流入主干** | 某分支包含危险改动或潜在 Bug,为避免 merge 到主分支,立即删除。 | |
|
|
|
| ⚠️ **冲突太多,放弃合并** | 分支与主干差异大、冲突重,重建更清晰,强行删除原分支。 | |
|
|
|
|
|
|
|
#### **切换分支**(修改) |
|
|
|
|
|
|
|
双击要切换的分支名字,出现小圆圈为激活状态。 |
|
|
|
|
|
|
|
#### **制造冲突** |
|
|
|
 |
|
|
|
|
|
|
|
**检出分支** |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
**“检出(checkout)远程分支”** 是指你将某个远程仓库(如 origin)上的分支拿到本地来使用、开发或查看的操作。 |
|
|
|
|
|
|
|
#### **制造冲突**(修改) |
|
|
|
|
|
|
|
**本地冲突**: |
|
|
|
|
|
|
|
分支2修改: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
分支1修改: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
合并分支: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
产生冲突: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
如果分支一修改了`1.txt`,分支2修改了`1.txt`且修改位置意义,修改内容不同合并时候就会产生冲突。 |
|
|
|
|
|
|
|
本地冲突: |
|
|
|
|
|
|
|
如果分支一修改了`1.txt`,分支2修改了`1.txt`且修改位置意义,修改内容不同合并时候就会产生冲突。 |
|
|
|
|
|
|
|
远程冲突: |
|
|
|
|
|
|
@@ -292,7 +471,7 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### 创建补丁 |
|
|
|
#### 创建补丁(修改) |
|
|
|
|
|
|
|
1. 在 `SourceTree` 中,**选择你要导出补丁的提交 |
|
|
|
2. 右键点击 → 选择 **“创建补丁”** 或 “Export patch” |
|
|
@@ -303,6 +482,17 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
在分支创建补丁的意义 |
|
|
|
|
|
|
|
| 目的 | 原因和优势 | |
|
|
|
| :-------------------: | :----------------------------------------------------------: | |
|
|
|
| **1. 避免污染主分支** | 主分支(如 `master`、`main`)通常要保持稳定、可发布。在新建分支上做补丁开发,不会影响主线。 | |
|
|
|
| **2. 更容易管理改动** | 分支相当于“一个封闭的变更沙箱”,方便组织、测试和提交改动。 | |
|
|
|
| **3. 方便团队协作** | 提交到分支后,其他开发者可以基于该分支拉取代码、做代码审查(Review)或测试。 | |
|
|
|
| **4. 创建补丁文件** | 使用 `git format-patch` 可以导出成 `.patch` 文件供邮件发送、打包发布或代码审计。 | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 应用补丁 |
|
|
|
|
|
|
|
选择补丁的位置选择补丁,点击应用。 |
|
|
@@ -380,7 +570,7 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### 创建标签 |
|
|
|
#### 创建标签(修改) |
|
|
|
|
|
|
|
**标识版本**:标签常用来标记软件的版本号,如 `v1.0.0`、`v2.1.3`,方便团队成员和用户明确某次发布对应的代码状态。 |
|
|
|
|
|
|
@@ -396,12 +586,18 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
单击标签,切换到标签的节点所在位置。双击标签可以切换到标签节点的内容。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
双击标签可以切换到标签节点的内容。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### 删除标签 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
### 检出分支 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |