(sourceTree这个软件我已经不用了 现在开始用github)GitHub Desktop 操作起来没有sourceTree复杂, GitHub Desktop使用起来很方便
GitHub Desktop点击下载
GitHub Desktop简单用法
- 将你的项目 直接拖到1.处 2.控制你项目中的分支
- 点击左下角 Commit to master 将暂存区内容添加到本地仓库中 (直接会省去git add 【提交到暂存区】)
- 点击最上方的中间push origin 把已修改的代码 推到线上去 如果有冲突 他会弹窗 告诉你有冲突 建议用vscode打开解决冲突 vscode解决冲突会很快 还会告诉你哪里冲突 解决完之后再次点击push 就ok了 工作中基本就这么简单
sourceTree用法
方法/步骤
在使用SourceTree之前必须要先安装Git和sourceTree,具体安装过程不再赘述,大家可以搜索其它教程。
注册并登陆Github,点击new repository,如下图
输入仓库名字,点击创建,创建后的仓库是空白的,如下图
复制仓库地址,如下图。
打开sourcetree,点击clone,如下图
切换到克隆配置页面,填入远程仓库地址,目标路径(本地存放路径),点击克隆。
打开目标路径,可以看到已克隆一个空白的版本库。
在目标路径下新增文件test1.txt
提交和推送。由于git是分布式版本控制工具,存在着本地仓库和远程仓库,所以我们在本地工作副本进行的编辑,要先提交到本地仓库,再从本地仓库推送到远程仓库。下面进行演示。第7步中编辑完成后,打开sourceTree, 可以看到文件的变动已经显示到软件界面,点击暂存所选,类似于勾选要提交的文件。
输入提交注释 [A]新增1,点击提交。
提交完成后,可以看到日志/历史选项卡中已显示提交的版本日志,在master分支 提交了新增1,不过这个master分支是本地仓库的,并不是远程仓库的。从第二张图可以看到远程仓库github里还是空白的。
推送。点击推送,勾选将本地master分支推送到远程master分支,点击推送。
推送完成后,可以看到最新的版本里显示了master 和 origin/master,这表明本地master分支和远程master分支是同步的,在一个节点上。登录GitHub可以看到仓库里已有提交记录了。如下图。这样本地修改的代码或文件就被同步到了远程仓库,可以被别人拉下来使用。
二 sourceTree中拉取和获取的区别,以及在现实使用中如何去操作。
打开github上的GitTest版本库,编辑test1.txt文件,如下图。
在文件test1.txt增加一行,如下图,提交。
3 获取和拉取。获取是将远程仓库的代码更新到本地仓库,拉取是将本地仓库的代码更新到本地工作副本。打开sourceTree,点击 获取按钮,如下图
点击确定,可以看到拉取图标那里多了一个蓝底白色的数字1,分支master那里也有一个灰色的数字1,并有一个向下的箭头,这表示 有一个更新需要拉取到本地工作副本。同时打开版本文件,可以看到test1.txt文件中没有第二步增加的123。
点击拉取,如下图
点击确定,可以看到待拉取的图标消失了。同时test1.txt文件也多了123
一般在实际使用中是不会先点获取,再点拉取的,因为拉代码都是直接一步到位为拉到本地工作副本的。所以直接一个拉取操作就够了。
三 sourceTree中创建分支和合并分支的使用方法和使用场景。
1分支。当要新增一个功能,又要保证原始功能的正常的使用,这个时候为了不影响原功能的使用,就可以建立一个分支,在分支上进行新增功能的开发,等到新增的功能测试通过后再把分支合并到主干上。如下图,点击分支,输入新分支名字,以当前工作副本为基础生成一个新的develop分支。
点击创建分支,可以看到多了一个develop分支,但是这个分支只存在于本地仓库。可以看到最新的日志记录节点上只有master , origin/master,develop,所以这个新分支是没有推送到远程仓库的。
点击推送,如下图,勾选第一个,将本地develop分支推送到远程develop分支
点击推送 ,如下图,可以看到本地develop和远程develop已经同步了。
在develop分支上新增功能,这里是新增了 add func1
在sourceTree界面,推送新增的功能到develop分支
再提交一条新增记录,如下图。可以看到develop分支比master分支多了2条提交记录。
功能1和2测试通过,现在要将develop分支上新增的两个功能合并到主分支master上。
将当前分支切换到master分支,鼠标移到到develop分支,右键,选择合并develop至当前分支,也即是主分支。
点击确定
可以看到master的本地仓库多了两条需要推送的记录。如图所示的红框内图标2,说明develop分支新增的两个功能已合并到本地仓库的master分支。
推送合并过来的两个新增功能。可以看到master分支已有了新增的两个功能。
四 解决冲突
虽然在团队协作开发中强调尽量避免操作同一文件,以避免冲突,但是在实际开发中还是会遇到冲突,所以掌握解决冲突的方法必不可少。
解决冲突就要先制造冲突,冲突一般是由于两个人同时修改同一文件而造成的。在GitHub上修改远程仓库文件模拟一个人操作,sourceTree本地修改同一文件模拟另一个人操作。
相同的版本基准,第三块是 远程仓库的修改。第四块是冲突处理后的代码。
本次解决冲突是为了合并两者的修改,所以我会把第一块和第三块所做的修改按照正确的逻辑顺序,合到第四块。如下图,点击保存。关闭该对比软件。
切到sourceTree界面,可以看到多了一个解决冲突的中间文件,由于冲突已解决,直接右键移除,
可以看到冲突已解决,代码已正确合并。推送该合并。
这样冲突就被解决了,可以看到本地工作副本和远程仓库的代码都是一致的了
五 Sourcetree支持文件的部分提交
SourceTree比起tortoiseGit来,最大的不同之处在于 Sourcetree支持文件的部分提交,这大大方便了用户的使用。
有的时候,我们开发了一个A功能,未上线,同时又并发开发了B功能,B功能比A功能先上线,而且B功能和A功能修改的是同一个文件,这种情况在上线B功能时,SourceTree就体现出优势了。
打开本地工作副本,增加文件activityServiceImpl.java,这个文件没啥特别,就是代码行数很多,方便演示。
打开SourceTree,推送该文件。
打开新增文件,新增func1,func2,func3三个功能,
现在的要求是,只提交func3,不提交func1和func2。打开sourceTree。如下图
右边区域滑到add func3处,点击暂存区块,该区块就会保存到待提交区。
已暂存文件里是待提交的,未暂存文件里不需要提交的,这样在一个文件里,就可以提交需要提交的,而不需要提交的也可以保留在工作区,等待下次提交
提交推送,如下图。
撤销回滚。在团队协作开发中,有时候提交完代码后,发现提交错了,这个时候,撤销回滚就起了重要作用。
在最新的提交记录上,右键-》回滚提交
在弹窗里选择是。
可以看到提交历史记录多了一个Revert 反向提交
打开本地工作副本,看到 做的修改已去除
这个时候,反向提交只提到了本地仓库,如需撤销远程仓库的,还需推送到远程仓库
点击推送,可以看到提交的func3已撤销。如下图。
• 方法/步骤
• 二 sourceTree中拉取和获取的区别,以及在现实使用中如何去操作。
• 三 sourceTree中创建分支和合并分支的使用方法和使用场景。
• 四 解决冲突
• 五 Sourcetree支持文件的部分提交