部门最近在做SCM迁移到Git的试点,在初步搞定了服务端之后,接下来我们就要着手解决客户端使用的问题。
0. 目录
- 1. 概述
- 2. 基本操作
- 2.1 拉取代码
- 2.2 提交代码
- 2.3 回滚代码
- 2.3.1 回滚本地修改。
- 2.3.2 回滚本地Commit。
- 2.3.3 回滚Server端Commit。
- 2.4 解决冲突
- 3. 后续
- 4. Links
1. 概述
相较于命令行来说,GUI方式对于新手入门更简单一些,这也是Windows能稳稳站在操作系统使用榜榜首多年的重要原因。因此本次我们也打算以GUI工具作为Git客户端使用的切入点。我们选择的是 Atlassian公司出品的Sourcetree。
2. 基本操作
按照我们之前对于SVN的运用,本次我们将主要介绍如下在Sourcetree中如何进行以下操作:
- 拉取代码
- 提交代码
- 回滚代码
- 解决冲突
2.1 拉取代码
- Sourcetree顶部菜单栏"文件" > “克隆/新建”。
- 在弹出的Tab页中,选择默认的"Clone",输入获取到的Git地址。
请注意笔者这里使用的HTTP格式的地址,默认情况下使用这种格式每次操作是需要输入用户名和密码的,因此我们采用下面这种格式来避免此类重复操作:
# 把远程连接例如http://xxx/yyy.git 修改为http://username:password@xxx/yyy.git ,
# 若是username或者password中有@,使用%40替换。
http://username:password@1xx.yy.zzz.ccc:790/root/firstgitlabproject.git
- 耐心等待Sourcetree拉取代码即可。
2.2 提交代码
在拉取完代码,进行完BUG修复或者Feature开发之后,我们就需要将本地的修改推送到远程Git服务器上。
这里笔者就不对GIT的基本概念进行赘述了,只需要按照以上如图所示,即可将本地更改推送到Git服务端。
这里将命令行和界面操作做一个简单的对照。
命令行 | Sourcetree |
git add | 暂存 |
git commit | 提交 |
git push | 推送 |
2.3 回滚代码
这里的回滚大概分为三种:
- 回滚本地修改。(此时还未进行本地Commit)
- 回滚本地的Commit。(此时还未推送到远程Git服务器)
- 回滚已经推送到Server端的Commit。
2.3.1 回滚本地修改。
这个应该是三种情形种最简单的了,只需要在未暂存区选中对应的文件,右键选择"丢弃"即可。
2.3.2 回滚本地Commit。
这一类操作只涉及到研发人员本地的操作环境,相对来说简单很多。只需要选取所要回滚Commit之前的那个Commit节点,然后选择下图中的选项即可。
弹出的交互框中,三个选项中推荐直接使用默认的混合合并,然后点击确认即可。
以上操作即可将本地Commit回滚掉,接下来研发人员对文件进行再次的修改,而不需要增加额外的Commit。
这里额外说明下上图中三个选项的含义:
选项 | 含义 |
软合并 | 回退到暂存区 |
混合合并 | 回退到未暂存区(默认) |
强行合并 | 直接把提交的文件reset (最好不要用) |
2.3.3 回滚Server端Commit。
这一种要稍微复杂一些。首选我们需要选中想要进行回滚的Commit节点,进行如下操作:
弹出的交互框中,确认之后将自动生成类似下图中的Commit。
最后点击左上角的"推送"钮将自动生成的Commit推送到服务端即可。
2.4 解决冲突
日常软件开发中,偶尔也会因为某些原因发生代码冲突的问题,这类问题在Sourcetree中表现如下:
解决方法:
右键选中发生冲突的文件,最终选择打开外部合并工具。
这里我们使用Beyond Compare 作为对比工具。
人工解决完冲突之后,再次提交文件即可。(注意冲突解决完毕之后本地会生成一个后缀为 .org 的文件,切勿提交!)
重要提示:
- 养成先pull,再编码的好习惯。
- 养成先pull,再push的好习惯。
3. 后续
Sourcetree的操作肯定还有不少,诸如作为Git重要亮点之一的分支等,就留待之后再介绍吧/
4. Links
- 你确定你能记住那么多的git命令吗?快试试Sourcetree吧
- SourceTree使用方法
- Office Site - get-started-with-sourcetree