|
|
@@ -49,25 +49,43 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
#### **创建本地仓库** |
|
|
|
|
|
|
|
***在浏览里面选择我们要创建本地仓库的文件夹。*** |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### **打开本地仓库** |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
**注意:在打开目标仓库的路径时候,不能点进隐藏文件.git文件** |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### **克隆远程仓库** |
|
|
|
|
|
|
|
**获取URL:http://gitea.xinje.cc/wangshunkui/kong.git** |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
**克隆** |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### **获取** |
|
|
|
|
|
|
|
获取是从远程仓库获取信息并同步至本地仓库(获取只会同步到本地仓库,不会更改工作文件) |
|
|
|
**获取是从远程仓库获取信息并同步至本地仓库(获取只会同步到本地仓库,不会更改工作文件)** |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### **关联远程仓库** |
|
|
|
|
|
|
|
-  |
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
注意:步骤四自己对远端电脑随便取个名就行。 |
|
|
|
|
|
|
|
### **节点相关操作** |
|
|
|
|
|
|
@@ -75,21 +93,37 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
将工作区的内容放到仓库的这个过程叫做提交。将写完后的文档先添加到暂存区,然后再写日志提交。每一次提交产生一个节点。 |
|
|
|
|
|
|
|
#### **重置** |
|
|
|
#### 回滚提交 |
|
|
|
|
|
|
|
(将修改后在未暂存区的东西,恢复修改前的版本) |
|
|
|
“回滚提交”指的是对 Git 历史中的某个提交进行撤销、修改或恢复的操作。常见的回滚行为包括: |
|
|
|
|
|
|
|
 |
|
|
|
- **撤销最近的提交** |
|
|
|
- **恢复到某个旧的提交版本** |
|
|
|
- **撤销某一次错误的提交(保留历史)** |
|
|
|
|
|
|
|
#### 回滚提交 |
|
|
|
回滚提交多步时候会产生冲突,所以这时候需要我们去解决冲突。 |
|
|
|
|
|
|
|
是指将改动的代码提交到本地仓库,但未推送到远端仓库的时候 |
|
|
|
 |
|
|
|
|
|
|
|
#### **重置当前分支到此次提交** |
|
|
|
|
|
|
|
是指将改动的代码提交到本地仓库后,并已推送到远端仓库的时候 |
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### Source Tree三种合并和区别 |
|
|
|
|
|
|
|
混合合并: |
|
|
|
|
|
|
|
是指将此次提交回滚到指定的位置,但这个过程中不会将修改过的文件暂存到暂存区,而是将修改过的文件存放在未暂存文件区。 |
|
|
|
|
|
|
|
强行合并: |
|
|
|
|
|
|
|
是指将此次提交回滚到指定的位置,但这个过程中将直接丢弃之前修改的所有文件。 |
|
|
|
|
|
|
|
软合并: |
|
|
|
|
|
|
|
软合并是指将此次提交回滚到指定提交位置,但这个过程中会将修改过的文件暂存到暂存区。 |
|
|
|
|
|
|
|
### **分支相关操作** |
|
|
|
|
|
|
@@ -103,117 +137,271 @@ Git是一个开源的分布式版本控制系统,它能够高效地处理从 |
|
|
|
|
|
|
|
激活master,选择要合并的支线,点击确定,将支线的所有变化的节点打包创建一个新节点合并过去。 |
|
|
|
|
|
|
|
 |
|
|
|
1. 切换到**目标分支**(如 `master`) |
|
|
|
|
|
|
|
 |
|
|
|
2. 点击上方菜单栏的:**分支 → 合并(Merge)** |
|
|
|
|
|
|
|
- 变基 |
|
|
|
3. 在弹窗中选择你要合并进来的源分支(如 `dev1`) |
|
|
|
|
|
|
|
 |
|
|
|
4. 点击“确定”开始合并 |
|
|
|
|
|
|
|
以分支为基合并到master里面 |
|
|
|
5. 如果有冲突,会提示你处理冲突 |
|
|
|
|
|
|
|
 |
|
|
|
6. 处理完冲突后,**提交合并记录** |
|
|
|
|
|
|
|
将之前的提交合并后再并入master |
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### Source Tree三种合并和区别 |
|
|
|
 |
|
|
|
|
|
|
|
混合合并: |
|
|
|
#### **删除分支** |
|
|
|
|
|
|
|
是指将此次提交回滚到指定的位置,但这个过程中不会将修改过的文件暂存到暂存区,而是将修改过的文件存放在未暂存文件区。 |
|
|
|
1. **切换出要删除的分支,你不能删除当前正在使用的分支。请先切换到其他分支**。 |
|
|
|
2. 在左侧分支列表中,**右键你要删除的分支** |
|
|
|
3. 选择 **“删除分支”** 或 |
|
|
|
4. 会弹出确认窗口,点击 **“删除”** 确认即可 |
|
|
|
|
|
|
|
强行合并: |
|
|
|
**注意尚未合并的分支不能删除(即没有备份的分支)** |
|
|
|
|
|
|
|
是指将此次提交回滚到指定的位置,但这个过程中将直接丢弃之前修改的所有文件。 |
|
|
|
 |
|
|
|
|
|
|
|
软合并: |
|
|
|
 |
|
|
|
|
|
|
|
软合并是指将此次提交回滚到指定提交位置,但这个过程中会将修改过的文件暂存到暂存区。 |
|
|
|
|
|
|
|
#### **删除分支** |
|
|
|
|
|
|
|
第一步先激活主分支 |
|
|
|
#### **切换分支** |
|
|
|
|
|
|
|
双击要切换的分支名字,出现小圆圈为激活状态。 |
|
|
|
|
|
|
|
· |
|
|
|
#### **制造冲突** |
|
|
|
|
|
|
|
本地冲突: |
|
|
|
|
|
|
|
如果分支一修改了`1.txt`,分支2修改了`1.txt`且修改位置意义,修改内容不同合并时候就会产生冲突。 |
|
|
|
|
|
|
|
#### **切换分支** |
|
|
|
远程冲突: |
|
|
|
|
|
|
|
双击分支名字,出现小圆圈为激活状态。 |
|
|
|
 |
|
|
|
|
|
|
|
#### **制造冲突** |
|
|
|
本地`3.txt`的内容: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
远端`3.txt`的内容: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
修改本地3.txt的内容: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
提交推送: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
报错: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### **解决冲突** |
|
|
|
|
|
|
|
在需要提交的文件里面自己手动保留要更改的内容,然后鼠标右键选择已经解决冲突。还有一种方式是以我为准就是保存master的,以别人为准就是合并时候保存分支的。 |
|
|
|
本地冲突: |
|
|
|
|
|
|
|
方式一:在需要提交的文件里面自己手动保留要更改的内容,然后鼠标右键选择已经解决冲突。 |
|
|
|
|
|
|
|
方式二:方式是以我为准激活的分支的内容是我要保留的内容。 |
|
|
|
|
|
|
|
方式三:以别人为准就是合并时候保存要合并的那个分支的内容。 |
|
|
|
|
|
|
|
远程冲突: |
|
|
|
|
|
|
|
拉取: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
解决冲突再重新推送: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
### **拉取** |
|
|
|
|
|
|
|
选择从远端仓库中哪个分支获取。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
### **推送** |
|
|
|
|
|
|
|
选择要发送到远端仓库的分支,点击推送。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
### 其他 |
|
|
|
|
|
|
|
#### 书写忽略文件 |
|
|
|
|
|
|
|
或者在这个隐藏文件中添加忽略的东西,可以是精确文件名,也可以是某一类后缀如*.txt,或者某个文件夹下的文件如/abc |
|
|
|
方式一:选择修改的文件,右击选择忽略。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
方式二: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
1. **忽略指定文件**:在 `.gitignore` 中添加精确文件名,如 `lalala.txt`,表示忽略该文件的所有更改。 |
|
|
|
|
|
|
|
2. **忽略特定类型的文件**:使用通配符后缀,如 `*.md` 表示忽略所有 `.md` 结尾的文件。 |
|
|
|
|
|
|
|
3. **忽略特定文件夹**:使用路径方式,如 `/name` 表示忽略项目根目录下的 `name` 文件夹及其所有内容。 |
|
|
|
|
|
|
|
#### 停止跟踪 |
|
|
|
|
|
|
|
停止跟踪的作用是让 Git 不再对某个已经被版本控制的文件或文件夹进行管理,这意味着即使你之后对该文件进行了修改、重命名或删除,Git 也不会再将这些更改记录到提交中。 |
|
|
|
|
|
|
|
本地文件停止跟踪: |
|
|
|
|
|
|
|
方式一:选择要停止跟踪的文件,然后右击鼠标,选择停止跟踪。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
停止跟踪后就不在受到版本管控 |
|
|
|
方式二:没有更改需要停止跟踪的文件,选择停止跟踪。 |
|
|
|
|
|
|
|
1. 第一步,选择要停止跟踪的文件 |
|
|
|
2. 点击操作 |
|
|
|
3. 点击停止跟踪 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
停止跟踪远程分支: |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### 创建补丁 |
|
|
|
|
|
|
|
 |
|
|
|
1. 在 `SourceTree` 中,**选择你要导出补丁的提交 |
|
|
|
2. 右键点击 → 选择 **“创建补丁”** 或 “Export patch” |
|
|
|
3. 选择保存路径,`SourceTree` 会导出为 `.patch` 文件 |
|
|
|
4. 将该补丁文件发送给他人或用于其他仓库应用 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### 应用补丁 |
|
|
|
|
|
|
|
选择补丁的位置选择补丁,点击应用。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
**1. 分支上的 `1.txt` 内容与补丁内容完全一致** |
|
|
|
|
|
|
|
- **表现**:补丁内容已经存在于文件中,Git 会检测到没有变化,通常补丁应用无效或跳过这部分,不会重复添加。 |
|
|
|
- **结果**:补丁不产生新改动,应用成功但无实际更改。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
**2. 分支上的 `1.txt` 是空文件** |
|
|
|
|
|
|
|
- **表现**:补丁中添加的内容(`+1`)会被完整地添加到空文件中。 |
|
|
|
|
|
|
|
- **结果**:文件由空变成包含补丁内容,补丁完全应用成功。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
**3. 分支上的 `1.txt` 内容与补丁内容部分一致** |
|
|
|
|
|
|
|
- **表现**:补丁中新增的内容与已有部分有重叠,Git 会尝试合并,可能成功应用新增部分,或者产生冲突需要手动解决。 |
|
|
|
- **结果**:补丁部分应用成功,冲突部分需人工介入。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
**4. 分支中没有 `1.txt` 文件** |
|
|
|
|
|
|
|
- **表现**:如果补丁涉及新增文件,Git 会直接创建 `1.txt` 并写入补丁内容;如果补丁只修改文件而文件不存在,则应用失败报错。 |
|
|
|
- **结果**: |
|
|
|
- 补丁新增文件时,文件被创建且内容写入。 |
|
|
|
- 补丁修改文件但文件缺失时,补丁应用失败。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 贮藏 |
|
|
|
|
|
|
|
(只能暂存区可以) |
|
|
|
**贮藏的典型用途:** |
|
|
|
|
|
|
|
- 临时切换分支处理紧急任务 |
|
|
|
- 拉取或合并最新代码前清理工作区 |
|
|
|
- 保存不完整的改动,避免提交不完整代码 |
|
|
|
|
|
|
|
贮藏相当于保留这一次更改到贮藏区域,但是不提交,以后的更改还是争对上一次提交。 |
|
|
|
贮藏操作会将你当前工作区和暂存区的改动(包括新增、修改、删除的文件)保存到一个栈中,同时将工作目录恢复到干净状态,就像没有修改过一样。这使你能够 **快速切换分支、拉取最新代码或进行其他操作,而不必担心未完成的改动被提交或丢失**。 |
|
|
|
|
|
|
|
#### 丢弃 |
|
|
|
|
|
|
|
放弃之前修改的文件,恢复上一次提交状态(只能暂存区可以) |
|
|
|
**丢弃** 指的是放弃当前工作目录或暂存区中的修改,将文件恢复到最后一次提交的状态。也就是说,丢弃操作会撤销你对文件所做的所有未提交更改,使文件内容回到仓库中最新提交的版本。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### 移除 |
|
|
|
|
|
|
|
(直接删除文件) |
|
|
|
(直接删除工作区的文件) |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
#### 创建标签 |
|
|
|
|
|
|
|
(方便快速找到) |
|
|
|
**标识版本**:标签常用来标记软件的版本号,如 `v1.0.0`、`v2.1.3`,方便团队成员和用户明确某次发布对应的代码状态。 |
|
|
|
|
|
|
|
**便于回溯**:通过标签可以快速跳转到对应提交,便于查阅、回滚或打包特定版本代码。 |
|
|
|
|
|
|
|
**不可变标记**:与分支不同,标签是固定的引用,不会随后续提交移动,保证历史版本的稳定性。 |
|
|
|
|
|
|
|
**支持轻量标签和附注标签**:轻量标签只是简单指向提交的指针,附注标签则包含作者信息、日期和描述,适合用于发布说明。 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
单击标签,切换到标签的节点所在位置。双击标签可以切换到标签节点的内容。 |
|
|
|
|
|
|
|
#### 删除标签 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
### 检出分支 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
 |