参考资料
- SourceTree使用教程(一)—克隆、提交、推送
- SourceTree的软合并、混合合并、强合并区别
- SourceTree 合并分支上的多个提交,一次性合并分支的多次提交至另一分支,主分支前进时的合并冲突解决
目录
- 一. 基础设置
- 1.1 用户信息设置
- 1.2 比较与合并工具设置
- 1.3 代理设置
- 1.4 SSH密钥
- 二. 代码提交
- 2.1 提交与推送
- 2.2 部分代码块提交
- 2.3 丢弃对代码的修改
- 2.4 贮藏
- 2.5 交互式变基
- 三. 代码回滚
- 3.1 回滚提交
- 3.2 回滚到指定版本
- 3.3 重置到提交概念解释
- 3.3.1 软合并-保持本地所有改动
- 3.3.2 混合合并-保持工作副本并重置索引
- 3.3.3 强行合并-丢弃所有改动过的工作副本
- 四. 分支
- 4.1 分支创建
- 4.2 分支切换
- 4.3 分支删除
- 4.4 分支合并
- 五. 代码冲突解决
一. 基础设置
1.1 用户信息设置
👉全局用户信息配置
👉单独项目用户信息配置
1.2 比较与合并工具设置
👉当代码冲突时,所使用的比较与合并工具是可以自己指定的。
1.3 代理设置
👉国内使用Github时,速度可能会比较慢。可以在此处指定魔法上网的代理服务器地址。
1.4 SSH密钥
二. 代码提交
2.1 提交与推送
⏹点击提交
按钮
⏹将文件添加到暂存区
⏹点击提交按钮,将文件添加到本地Git仓库
git是分布式版本控制工具,存在着本地仓库和远程仓库,所以我们在本地工作副本进行的编辑,要先提交到本地仓库,再从本地仓库推送到远程仓库。
⏹点击推送按钮,将本地git仓库中的变更文件,提交到远端的Git仓库中。
2.2 部分代码块提交
⏹如下图所示,我们对3处进行了修改,但只有js处的代码是本次想要提交的
⏹在未暂存文件
区域,选中一行变更的代码,然后按住Shift进行多选,然后点击暂存行。
然后在已暂存文件
区域处,可以看到只把js处的代码反映上去了。
2.3 丢弃对代码的修改
⏹如果想要丢弃所写的代码,选中代码文件后,选择丢弃
即可。
⏹如果只是部分代码想要丢弃,可以选中要丢弃的代码后,选择丢弃行
。
2.4 贮藏
🤔现在使用Git都是用多分支进行开发,我们一般在自己所在的分支进行开发。但是有时候,可能需要切换到别人所在的分支,帮别人对应bug。
此时自己所在画面的代码可能还没有写完,此时可以将代码提交到本地仓库,或者可以使用贮藏
功能将修改的代码暂存起来。
⏹如下图所示,我们点击贮藏
按钮,添加描述后,将此次变更暂存起来。
⏹在贮藏区域,我们可以看到修改的内容
⏹我们的修改内容放到暂存区之后,本地的代码会返回到未修改的版本。
我们还可以点击应用贮藏区
,来将变更的代码反映到本地的工作副本。
2.5 交互式变基
🤔变基可以将多次本地提交合并为一次提交,简化提交履历。
💥注意:多次提交只是提交到本地Git仓库,并没有推送到远端。
⏹如下图所示,我们分3次提交了代码到本地Git仓库,这3次提交都只是添加了console.log语句,
因此可以合并为一次提交然后推送到远端仓库
⏹交互式变基操作如下所示,选中要合并的提交的前一次提交,点击交互式变基
功能,
然后将多次提交合并为一次。
三. 代码回滚
3.1 回滚提交
🤔有时候刚推送完代码后,发现代码存在错误。这个时候,回滚提交就起到了作用。
💥注意:只能回滚到上一个版本。
⏹如下图所示,我们在最近一次的版本上,创建了一个文件01-test01.html
⏹此时,选择回滚提交,会看到Git给我们创建了一个反向提交,用来撤销上一次的修改。
3.2 回滚到指定版本
⏹点击要回滚到的版本,选择重置当前分支到此次提交
,然后选择强行合并
。
⏹ 选择强行合并之后的效果如下
💥注意:有提示拉取,不要拉取,忽略它。
⏹ 选中最近一次提交,然后在重置当前分支到此次提交
中选择软合并
。
⏹ 选择软合并之后的效果如下
🤔可以看到未提交的更改中
多了一个文件,这个文件正好就抵消了红框中变更履历所对应的内容
只要我们将未提交的更改中
的文件选中推送,正好就回滚到了我们指定的版本。
3.3 重置到提交概念解释
⏹ 如下图所示,我们向本地的Git仓库提交了console.log打印
3.3.1 软合并-保持本地所有改动
将此次提交回滚到指定提交位置,但这个过程中会将修改过的文件暂存到暂存区。
⏹软合并效果如下
🤔可以看到,我们的修改的代码,跑到了已暂存文件
区域。
3.3.2 混合合并-保持工作副本并重置索引
将此次提交回滚到指定的位置,但这个过程中不会将修改过的文件暂存到暂存区,而是将修改过的文件存放在未暂存文件区。
⏹混合合并效果如下
🤔可以看到,我们的修改的代码,跑到了未暂存文件
区域。
3.3.3 强行合并-丢弃所有改动过的工作副本
将此次提交回滚到指定的位置,但这个过程中将直接丢弃之前修改的所有文件,因此在选取此种合并时需要考虑清楚,避免一些不必要的麻烦。
⏹强行合并效果如下
🤔可以看到,我们修改的所有代码,都消失不见,且无法找回。