首先,网络代理方面非常重要,这关乎于能否正常链接github,在 SourceTree 中设置代理:
点击菜单 工具(Tools) → 选项(Options)
选择 网络(Network) 标签页
勾选 启用代理服务器(Enable HTTP proxy server)
填写你的代理信息:
代理主机:127.0.0.1 或你的代理服务器地址
代理端口:7890 或你的代理端口(常见的是 7890, 1080, 8080)
如果代理需要认证,填写用户名和密码
点击 确定(OK)
创建新分支:
在左侧 "分支" 面板中,右键点击当前分支(如 main)
选择 "新建分支"
输入你的分支名(如 my-custom-feature)
勾选 "检出新分支"(自动切换到这个分支)
点击 "确定"
进行修改:
在你的项目文件夹中编辑代码("魔改")
提交更改:
在 SourceTree 中,你会看到 "未暂存文件" 列表
勾选要提交的文件(或点击 "暂存所有")
在下方的提交信息框中填写说明(如 "添加了新功能X")
点击右下角的 "提交" 按钮
推送到远程:
点击工具栏的 "推送" 按钮
确保勾选你的分支(如 my-custom-feature)
点击 "确定"
方法A:交互式变基(推荐)
右键点击你的分支,选择 "变基子代"
勾选 "交互式变基"
在弹出的提交列表中,除了第一个提交,把其他的都改为 squash 或 fixup
完成后会生成一个新的合并提交
方法B:软重置后重新提交
右键点击分支最早的父提交,选择 "重置当前分支到此次提交"
选择 "软重置"(保留工作区更改)
所有更改会回到暂存区
重新做一次提交,包含所有更改
AB的虽然最终代码一样,但生成的 Git 历史不同:
交互式变基:产生一个可追溯的合并提交,包含所有被压缩提交的元数据,推荐合并多个模块的时候使用
软重置:产生一个全新的提交,与之前的历史完全断开,推荐单个模块内合并多次开发的时候使用
举个例子:
交互式变基:像用扫描仪把 5 张草图扫描后,用 Photoshop 分层合并,可以保留每层的标签和备注
软重置:像把 5 张草图全撕了,直接在一张新纸上重新画,之前的草图痕迹完全消失
切换到主分支:
双击左侧的 main 分支
合并你的分支:
右键点击你的分支(如 my-custom-feature)
选择 "合并 my-custom-feature 到当前分支"
选择合并方式:
合并提交:保留两个分支历史(推荐)
变基:把你的提交应用到主分支顶端(历史更线性)
squash :把你的所有提交压缩成一个提交
推送到远程:
点击 "推送" 按钮,推送合并后的主分支