部门最近在做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中如何进行以下操作:

  1. 拉取代码
  2. 提交代码
  3. 回滚代码
  4. 解决冲突
2.1 拉取代码
  1. Sourcetree顶部菜单栏"文件" > “克隆/新建”。
  2. "文件" > "克隆/新建"

  3. 在弹出的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
  1. 耐心等待Sourcetree拉取代码即可。
2.2 提交代码

在拉取完代码,进行完BUG修复或者Feature开发之后,我们就需要将本地的修改推送到远程Git服务器上。

Sourcetree把本地代码关联到远程仓库_spring boot_02


这里笔者就不对GIT的基本概念进行赘述了,只需要按照以上如图所示,即可将本地更改推送到Git服务端。

这里将命令行和界面操作做一个简单的对照。

命令行

Sourcetree

git add

暂存

git commit

提交

git push

推送

2.3 回滚代码

这里的回滚大概分为三种:

  1. 回滚本地修改。(此时还未进行本地Commit)
  2. 回滚本地的Commit。(此时还未推送到远程Git服务器)
  3. 回滚已经推送到Server端的Commit。
2.3.1 回滚本地修改。

这个应该是三种情形种最简单的了,只需要在未暂存区选中对应的文件,右键选择"丢弃"即可。

Sourcetree把本地代码关联到远程仓库_spring boot_03

2.3.2 回滚本地Commit。

这一类操作只涉及到研发人员本地的操作环境,相对来说简单很多。只需要选取所要回滚Commit之前的那个Commit节点,然后选择下图中的选项即可。

Sourcetree把本地代码关联到远程仓库_推送_04


弹出的交互框中,三个选项中推荐直接使用默认的混合合并,然后点击确认即可。

Sourcetree把本地代码关联到远程仓库_回滚_05


以上操作即可将本地Commit回滚掉,接下来研发人员对文件进行再次的修改,而不需要增加额外的Commit。

这里额外说明下上图中三个选项的含义:

选项

含义

软合并

回退到暂存区

混合合并

回退到未暂存区(默认)

强行合并

直接把提交的文件reset (最好不要用)

2.3.3 回滚Server端Commit。

这一种要稍微复杂一些。首选我们需要选中想要进行回滚的Commit节点,进行如下操作:

Sourcetree把本地代码关联到远程仓库_回滚_06


弹出的交互框中,确认之后将自动生成类似下图中的Commit。

Sourcetree把本地代码关联到远程仓库_回滚_07


最后点击左上角的"推送"钮将自动生成的Commit推送到服务端即可。

2.4 解决冲突

日常软件开发中,偶尔也会因为某些原因发生代码冲突的问题,这类问题在Sourcetree中表现如下:

Sourcetree把本地代码关联到远程仓库_spring_08

解决方法:

右键选中发生冲突的文件,最终选择打开外部合并工具。

Sourcetree把本地代码关联到远程仓库_java_09


这里我们使用Beyond Compare 作为对比工具。

Sourcetree把本地代码关联到远程仓库_spring_10


人工解决完冲突之后,再次提交文件即可。(注意冲突解决完毕之后本地会生成一个后缀为 .org 的文件,切勿提交!)

重要提示:

  1. 养成先pull,再编码的好习惯。
  2. 养成先pull,再push的好习惯。

3. 后续

Sourcetree的操作肯定还有不少,诸如作为Git重要亮点之一的分支等,就留待之后再介绍吧/

4. Links

  1. 你确定你能记住那么多的git命令吗?快试试Sourcetree吧
  2. SourceTree使用方法
  3. Office Site - get-started-with-sourcetree