前言
Sourcetree 是一款免费的 Git 可视化管理工具,在选择性提交代码(如:只提交一个文件中某些修改的行),分支管理等方面可以提供很大的帮助。
使用流程
环境:MacOS
版本:Sourcetree 4.1.2
引入本地仓库
首先从 Github/Gitee 远端 clone 下本地仓库。然后打开 Sourcetree,点击 New - 添加已有的本地仓库。从弹出窗口选择自己 Git 仓库的顶层文件夹即可。
然后双击添加的仓库,即可进入管理界面:
配置 SSH
如果是可信任的电脑,可以在电脑上生成 SSH key,然后配置到 Github 账户,否则无法直接使用 Sourcetree 进行代码提交(会提示需要打开终端输入账号密码)。
$ cd ~/.ssh
$ ls
id_rsa id_rsa.pub known_hosts
该文件夹底下的 id_rsa.pub 即为我们需要的 ssh 公钥。
如果没有,则需要自己生成一下:
可参考官方文档
然后 $ cat ~/.ssh/id_rsa.pub
查看公钥文件的内容,并全部复制。
前往 Github - 点击头像 - Settings,找到 SSH and GPG keys 配置。
随便填一个 Title,然后粘贴 ssh 公钥,点击添加 ssh key 即可。现在,从该电脑向相应 Git 账号下的仓库提交代码就都不需要提供账号密码了。
注意一台电脑上的一个 ssh 公钥只能给一个 Github/Gitee/Gitlab 账号使用,如果要提供给不同账号(或者不同平台的“同一账号”)使用,需要在电脑上创建另外的新的 ssh key。具体操作还请参考: https://blog.csdn.net/m0_37886783/article/details/106511702
新建分支
刚刚引入的本地仓库里面就是当前代码仓库的分支,在公司代码仓库进行修改往往都要新建一个自己的分支,然后再申请 merge 到公司代码。
点击界面上方的 Branch 按钮,即可进入新建分支。输入自己的分支名,选择复制主分支代码,新建即可。(对应命令行:git checkout -b "Problems_myBranch"
)
现在我们已成功新建一个分支,同时当前正在使用该分支,此时便可以进行自己的修改,而不会影响公司代码。
暂存代码
在我们对代码进行了修改之后,如果想要切换分支(双击 BRANCHES 下的其它分支),则会告警:
如果不想自己修改的代码丢失,便可以使用 Stash 暂存代码:
输入一个名字,点击 Stash,当前所有的修改便会暂存到 STASHES 模块下:
现在我们就可以放心的切换到别的分支(这个操作不会对其它分支已有的文件造成任何影响,对应命令行:git checkout Problems
),当再次切换回自己分支的时候,双击 STASHES 下自己暂存的代码:
便可以将自己分支的代码恢复到上一次自己修改的状态。
提交代码
点击左上角的 Commit,进入提交代码的界面:
在这里可以看到我们修改、删除、新增的文件,点击文件前面的框可以进行 stage(对应命令行:git add fileName
)
我们还可以点击修改的文件,然后选中一些修改的行,点击 Stage Lines 进行部分提交!
操作完毕后,在底部的提交栏填写提交信息,点击 Commit 即可提交代码(对应命令行:git commit -m "your message"
)。
合并代码
首先切换到需要接受合并代码的分支。点击 Merge,从 Log 中选择某个分支的最新的改变,合并到当前分支。
我们并不会用这个方法将自己分支的代码合并到主分支(因为咱一般也不能直接造次),反而是常常用来将主分支更新的代码合并到自己的分支。
在我们写代码的过程中,远端主分支的代码可能发生了改变,而这些改变也会对我们目前正在写的代码有影响,我们需要将其加入到当前代码中(且保留已经写好的代码)。
于是操作流程:Stash 代码 -> 切换到主分支 -> Pull -> 切换到自己的分支 -> 将主分支的 Pull 合并到自己的分支 -> 取出 Stash 的代码,完成!
推送代码
对远端的对应分支的代码进行更新,点击 Sourcetree 上部的 Push 即可。
要注意的是,主分支一般是不能直接动的,需要在 Github 创建 Pull Request,申请将自己的分支 merge 到主分支,由专人审核之后,即可合并。
创建远端分支
由于我们在本地新建的分支,远端是不知道的,所以无法直接 push 代码。
git push origin Problems_myBranch // 指定远端分支推送本地当前分支的代码,如果远端没有该分支会自动新建
git branch --set-upstream-to=origin/Problems_myBranch // 将本地分支关联到远端分支上,此后在该分支的push,Sourcetree会自动关联到对应的远端分支
Sourcetree 此时也显示了我们推送到远端的分支。
结语
推荐大家在进行任何不太确定的操作之前,Stash 一下代码,这样自己的代码会永久保存在 Sourcetree 的暂存区,然后放心大胆的去操作。
最后就是要保持隔离性,也就是不到最后一步,不要跟主分支有任何不清不楚的关系。
如有差错,敬请指正。