本文参考了Git/SourceTree版本管理_哔哩哔哩_bilibili
一、仓库的创建与提交
1、新建本地仓库
(1)在桌面新建文件夹workspace。打开sourcetree,点击“Create”,关联workspace的路径。
(2)在桌面workspace文件夹中新建txt文件:test.txt。对test.txt文件的修改都将在sourcetree中体现。
2、暂存与提交
在workspace文件夹中发生改动,经sourcetree暂存、提交后方可实际保存。
二、时间点回溯
白色光圈指示当前workspace文件夹中的数据对应的时间点,可以通过双击其他结点可以查看此时的数据状态。
上述操作仅仅只能查看对应结点的文件状况。通过右击结点,选择“重置当前分支到此次提交”将跳转到此分支结点。有三种跳转模式:
一般选择混合合并和强行合并。
混合合并:跳转至结点后,需要手动丢弃文件状态中暂存的改动,即将文件状态成功重置到对应结点处。
强行合并:跳转至结点,自动丢弃该结点后的所有改动。
三、平行版本控制
在实际工作中,为避免多次修改造成版本混乱,通常使用分支方法,将想要做的修改在分支中进行。确认修改无误后,将分支与主支进行合并,并删除无用的分支。
点击“分支”,创建当前结点的一个分支。勾选“检出新分支”,会创建一个与当前master(master可以理解为主版本)完全相同的分支,并且将其激活。可以在分支中对文件版本进行管理,当工作完成后,通过“合并”操作将分支中的操作合并到master。如下图:
激活分支“dev”,在workspace文件夹中添加fruit.txt文件,并提交。进行多次改动操作。双击master,激活主支。可以发现,此前在“dev”分支中进行的操作并未同步到master中,workspace文件夹中并无fruit.txt文件。
1、普通合并
点击“合并”,选择想要和合并的平行节点,勾选“立即提交合并”、“无论快进更新...”。如下图:
此时,master已经与平行节点合并。
遴选操作:在普通合并中,通过遴选可以只将选定的分支节点操作与master合并。切换到master中,右击需要的节点,点击“遴选”,
2、变基合并
与普通合并操作类似,但在勾选选项时,需要额外勾选“用变基代替合并”。
3、普通与变基合并的区别
普通合并:从分支开始处起,将在分支中的操作传递给master。
变基合并:将建立分支时的master状态替换为分支当前的状态。即在分支之后对master的操作会作用到合并之后新的master之上。
四、基本操作
1、合并节点
当工作图谱中节点过多时,可将节点合并便于管理。右键想要合并的节点,选择“交互式变基子提交”。点击“用此前的squash”将节点合并。
五、远端关联
在多设备协同工作时,将文件存放在云中便于实现多端同步。文件存放在云端平台中与各设备本地中,设备1对本地文件进行更改,并将修改推送至云端。其他设备便能从云端平台中进行文件拉取来获得更新。
1、创建并关联云端平台
以GitHub为例,创建repository后,复制项目URL,http或ssh格式。如下:
在本地项目中,点击“设置”、“添加”,输入远端仓库名称及其URL,托管类型选择“未知”,点击“确定”。如下:
此时,仅将本地项目与远端仓库关联,但并未将远端仓库与本地仓库同步。在sourcetree左侧“远程”栏中可以查看所关联的远程仓库状况,此时远端仓库为空。
2、推送与拉取
将本地项目推送至云端仓库。点击“推送”,勾选需要同步至远端的分支,点击“推送”。此时远端仓库已经与本地同步,刷新GitHub网页可以发现仓库同步成功。如下: 拉取,将云端仓库同步至本地。与推送操作类似。
备注:当在本地仓库进行节点回溯时,即“重置当前分支到此次提交”,是无法直接将该分支推送至远端仓库的。需要在推送时勾选“强制推送”。