HowTo-use-TortoiseGit-for-Windows

Git是目前最先进的版本控制系统,越来越多的业务场景都在使用Git,风靡全球的Github更是让Git版本控制系统名声大震,但是GitHub旨在建立一个开源的生态环境,所以不适合企业内部的管理系统,在之前的文章中,我也讲到了如何搭建GitLab,可以在企业内部自建一套功能完善的Git版本控制系统。

GitLab是一个非常成熟的服务端应用,但是作为一名开发人员,我们在使用GitLab与其他人员协同版本时,需要有一个工作对我们的每次修改更新以及推送,这也是版本控制工具的真正精髓;在不同的平台有着很多丰富的应用软件,所以挑选一款适合自己的Git GUI工具很重要。

目前在众多Git Client之中做的比较好的是SourceTree,并且同时支持Mac和Windows双平台,但是有一个问题,当我们在初次安装时需要验证Atlassian账号,但是Atlassian的注册页面用了requirejs,而且是用了Google的CDN服务,所以必须翻墙,这对很多中国用户的使用造成了不变;所以,今天我在这里推荐一个在Windows平台下同样可以作为Git图形化客户端工具的:TortoiseGit

TortoiseGit 是 TortoiseSVN 的 Git 版本,TortoiseGit用于迁移 TortoiseSVN 到 TortoiseGit,解决了在Windows平台之上没有合适Git图形化客户端的问题,TortoiseGit不仅免费,而且同样支持丰富的语言包,但是需要独立下载语言包安装,默认只有英文,注意语言包与程序版本一定要匹配。

下载

TortoiseGit的官方下载地址是这里:https://tortoisegit.org/download/ ,下载时请注意与你系统的兼容性。

注意TortoiseGit 1.8.16之后的版本不在支持Windows XP 和 Server 2003

因为TortoiseGit官网不在国内,所以在访问下载时速度非常的慢,我将目前的稳定版本2.4上传到我的百度云盘,但是以后我可能不能及时更新,所以如果你对版本要求不是很高,可以点击下面链接下载。

链接: https://pan.baidu.com/s/1eScNjA6 密码: 31hu

如链接失效,您可以通过本页面右下角展开通过邮箱,与我取得联系。

安装

Git for Windows

首先,我们需要安装Git在你的电脑上,这保证你的TortoiseGit运行时所需要的依赖环境。

下载地址:https://git-for-windows.github.io/

同样,因为某些网络的原因,导致我们在下载时也会很慢,所以我也将目前最新2.13版本上传到了我的百度云盘:

链接: https://pan.baidu.com/s/1c12ZvRq 密码: 43yt

安装过程,这里不在展示,通常情况下,你只需要一路点击Next即可,但是如果你想要修改一些设置,例如默认的安装位置,那么你需要注意下,在TortoiseGit初次启动时,你需要手动设置Git.exe的位置。

TortoiseGit

我的测试系统是Windows 7 旗舰版 64位,并且支持TortoiseGit最新的版本。

请依次安装上图中两个软件,注意LanguagePack应该在主程序之后安装,同样,你也只需要一路点击Next即可。

在你安装完成之后,在该目录的空白区域,单击鼠标右键,你应该会看到新增了TortoiseGit的选项,我们选择”TortoiseGit”>“Settings”来初始化我们设置。

修改程序语言为中文

如果英文你的使用不会有影响,你可以略过这一步骤,同样你也不需要下载上面的LanguagePack包。

好了,按照如上图中操作,你应该已经修改了程序语言为中文,再次到空白区域单击测试就可以看到了。

使用TortoiseGit克隆你的项目

在我们安装了好TortoiseGit和Git的基本基础环境之后,我们需要使用TortoiseGit克隆项目,这里我们是在GitHub创建了一个测试项目,你可以直接使用你的项目地址即可。

测试项目

GitHub和GitLab都提供了通过使用HTTPS和SSH的方式,这两种方式有些不同,我会在下面分开讲述如何使用。

SSH验证方式

如果采用SSH验证方式,那么你需要生成一对公钥和私钥,并且将公钥上传到你的GitLab或GitHub上,然后在克隆你的项目时,使用匹配的私钥即可。

那在Windows如何上生成私钥呢?其实我们在安装TortoiseGit时已经默认安装PuTTYgen工具,我们可以利用它来创建秘钥。

打开PuTTYgen,点击generate即可创建密钥,PuTTYgen其实是按照鼠标运行的轨迹来计算的,所以在点击后,我们不停的使用鼠标移动,等待进度条完成就可以了。

当创建完成之后,你可以看到以下以下内容,注意不要关闭,我们要点击Save public keySave private key,并将上public key传到你的GitHub或GitLab账户之中。

注意,我在图中隐去了其他SSH keys信息,我建议你在做类似分享时也注意隐去你的重要信息

好了,接下来,我们就要开克隆我们的项目了,在你想要存放项目的目录内,鼠标右键选择”Git克隆“,然后输入你的项目URL,并且加载我们刚刚生产私钥文件。

注意,在你确认都没问题的情况下,点击确认,然后你就会看到如下页面,如果这个过程中出现问题,请注意检查项目URL和私钥文件是否正确。

到这里,我们SSH验证仓库的方式就全好,接下来我们就可以使用开始进行我们的工作,但在首次提交我们的项目时,需要设置用户名和密码,这是为了方便验证我们的身份。

点击”是“,在弹出的窗口中设定用户名和邮箱,保存即可。

HTTPS or HTTP

在使用GitLab为公司内部仓库时,可以不开通HTTPS验证,HTTP也不会影响我们的验证方式,但是从安全的角度上来说,强烈建议启用HTTPS,HTTPS加密传输可以给我们的代码和用户信息的安全提供更好的保护。

如果使用HTTPS or HTTP的方式,我们不需要增加任何密钥文件或怎样,只需要使用我们现有的GitHub或GitLab账号即可;在你想要存放项目的目录内,鼠标右键选择”Git克隆“,在弹出的窗口中,注意项目URL要是用HTTPS,并且去掉勾选加载密钥选项。

如果你的项目在GitLab上,并且这个项目是一个私有项目,那么这里就会要求你输入你的GitLab用户名和密码,输入正确的用户和密码就可以成功克隆了。

但是,由于我的测试项目在GitHub上,GitHub上的项目默认都是公开项目,所以在这一步骤不会询问我的用户名和密码,只有在我需要将本地更新推送到GitHub时才会验证;所以接下来我在项目目录下新增文件newfile2.txt,

注意,Git不同SVN,Git的提交不会将更新推送到远端服务器,所以我们在提交成功之后,再去手动推送

右键选择Git提交,会弹出提交页面,我们需要这里,输入提交说明信息,和需要提交的文件。

点击”提交之后“,我们会看成功提交的窗口,然后在窗口选择点击推送;

当我们点击推送之后,会要求输入对应的GitHub用户名和密码:

Git 使用规范流程

团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。下图是比较常规的Git使用规范流程,这能适合绝大多数团队开发的需求,推荐你们也这样使用。

1. 分支管理

  1. 主分支Master:首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。

  2. 开发分支Develop:主分支只用来分布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做Develop。

  3. 临时性分支

    1. 功能分支 : 为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要再并入Develop,功能分支的名字,可以采用feature-*的形式命名。

    2. 预发布分支 : 指发布正式版本之前(即合并到Master分支之前),我们可能需要有一个预发布的版本进行测试,预发布分支是从Develop分支上面分出来的,预发布结束以后,必须合并进Develop和Master分支。它的命名,可以采用release-*的形式。

    3. 修补bug分支:软件正式发布以后,难免会出现bug。这时就需要创建一个分支,进行bug修补。修补bug分支是从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支。它的命名,可以采用fixbug-*的形式

2. 新建分支

Master分支不允许进行开发,所有的开发相关操作都必须基于develop分支.

1
2
3
4
5
# 获取主分支最新代码
git chekcout master

# 新建develop分支进行开发
git checkout -b develop
3. 提交分支

分支修改后,使用commit提交修改。

1
2
3
4
5
# add 所有新增的文件
git add --all

# 提交更新, 每次提交必须写增加的东西和修改内容,保证协同开发是其他看到代码就能知道你做了什么
gti commit -m "first commit"
4. 推送到远程仓库

commit 之后,其实代码还在本地仓库,这时我们需要将本地版本与git远端仓库进行同步

1
2
# 推送到远程develop分支
git push origin develop
5. 合并分支

当代码提交到远端develop分支后,应该让别人进行代码review和测试,确认无误后,合并到Master分支,完成开发。

HowTo-Skip-Atlassian-Auth-for-SourceTree

问题

因为国内的网络的原因,导致我们在首次打开SourceTree时需要验证Atlassian账号,但是Atlassian的注册页面使用requirejs是用了Google的CDN服务,所以无法正常通过验证,如果你有翻墙工具,那么这就没有问题,下面我要讲的方法是在不翻墙的情况下跳过初始化验证。

目前我解决的是在Windows平台上的问题,关于Mac平台,我稍后会更新到文档中。

解决思路

我的想法是通过增加account信息,让SourceTree跳过验证;经过测试2.0.19及以下版本都支持,但是SourceTree在最新版本2.0.20时可能修订验证方式,所以导致我的这个方式不适用,大家可以在我的百度云盘共享中下载2.0.19,功能上并没发生多少变化。

链接: https://pan.baidu.com/s/1qYsHKWs 密码: wnc3

解决步骤

.NET 4.5.2

SourceTree 依赖的.NET环境最低是4.5.2,当然在你安装的过程中,会提示你下载安装,你只需要确认即可,不过这样下载会比较慢,所以建议你使用Offline的形式安装,下面是微软官方下载地址:

https://www.microsoft.com/en-us/download/confirmation.aspx?id=42642

SourceTree

安装过程中,默认一路“Next”即可,在安装完成之后,我们需要找到SourceTree在LocalAppData中的路径,请打开资源管理窗口,然后输入以下地址:

1
%LocalAppData%\Atlassian\SourceTree\

如果路径不存在,创建目录即可

然后将之前百度云盘的文件accounts.json复制到这个位置,它的路径应该是:

1
%LocalAppData%\Atlassian\SourceTree\accounts.json

文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[
{
"$id": "1",
"$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
"Authenticate": true,
"HostInstance": {
"$id": "2",
"$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
"Host": {
"$id": "3",
"$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
"Id": "atlassian account"
},
"BaseUrl": "https://id.atlassian.com/"
},
"Credentials": {
"$id": "4",
"$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
"Username": "",
"Email": null
},
"IsDefault": false
}
]

添加完成之后,启动SourceTree即可发现已经跳过了验证界面。

使用SoureceTree管理你的git项目

Update
  • update: Windows用户在初始化Souretree工具时,需要用到Atlassian ID,新建用户时需要加载google 验证码,这一步需要VPN的支持,请注意。
  • 找到一个版本的SourceTree工具可以不需要以上验证也能使用,下载链接:SourceTreeSetup_1.6.14.exe 密码:c5l4


补充1 :Git学习网站
  1. 猴子都能学会的git教程
  2. 常用 Git 命令清单
  3. 廖雪峰的git教程
  4. Why Git is Better than X
补充2 :利用Git协同开发
  1. 团队中的Git实践
  2. Git 使用规范流程
  3. Git分支管理模型
  4. 图解Git

1. 关于 SourceTree

SourceTree 是一款免费且同时支持Windows 和Mac 的git项目管理软件,本文旨在给大家介绍这款应用的基础使用,并用它来管理你的项目。

官网: https://www.sourcetreeapp.com/

2. git帐号建立

1. 新员工入职之后,你的公司邮箱内会收到一封来自Gitlab的邮件,如下图:

image

2. 点击邮件中的 “Click here to set your password”,设置gitlab登陆密码。

image

3. 登陆gitlab帐号,将会出现这个界面:

image

4. 设定个人信息:

image

5. sshKey

5.1 在Linux和Mac上生成sshkey:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
➜  ~ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/Alex/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/Alex/.ssh/id_rsa.
Your public key has been saved in /Users/Alex/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:98jE3jhBhFT5nQlZRj34a3WOk1t6XF+Dbf/hliXl4WQ Alex@Alex-Mac
The key's randomart image is:
+---[RSA 2048]----+
| ..oo. +=. |
| ... oo ..|
| .. o.o.|
| o . +E+|
| S = **=|
| = * .=BB|
| * o oOO|
| . +o*|
| .oo|
+----[SHA256]-----+
➜ ~ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvuQAq65b+nLZPqqc3b3Mj9e7Pt8oWKasJFa2QH1VIEkDvxKLFGcHsT7Ur4zXwEi9YiW2tVRrBSjcMALxuBjVm2IxYV6Lk8SLuGadyYy5telWGJmHsQ3VIPRuKwpzTkLN643kjqc6JFSlnZG/XoP9SPtCOsp2ql4u0s7Auc2bZay4RaTDXbcpJVU9OA0xM8Zy4oTTNYdZ4tvGittVmn+wLrhN255J7clORF5126dmDYxV3E8ZboaDdQpdLGIWmDNcBJQvl0CLwpKUCi7EUDqDVtm4bNgwIX9fEIkTxGdaWjBW1iXBk8TGXWkgB+Qp8B1IwaJ4GHUwUhQrefWvw9XeJ Alex@Alex-Mac
➜ ~

5.2 在Windows上生成sshkey:

因为windows没有自带openssl模块,所以在Windows环境中使用第三方工具puttygen.exe生成sshkey 下载地址

步骤如下:

image
image
image

当sourcetree首次启动时,会弹出加载sshkey的提示,按提示操作,找到之前保存的private.ppk文件

image

5.3 上传sshkey:

image

6. 回到 dashboard ,点击项目名称进入详情:

image

7. 使用souretree将项目从git服务器clone到本地

7.1 安装souretree 软件 [略]

7.2 clone项目到本地

image
image

8. 进入项目工作台:

image

9. 关于sourcetree工具的使用,下面是一些git操作的释疑。

  • 检出仓库: 将在本地创建一个git仓库的克隆版本
  • 工作流: 本地仓库由 git 维护的三棵“树”组成。第一个是 工作目录,它持有实际文件;第二个是 缓存区(Index),它像个缓存区域,临时保存改动;最后是 HEAD,指向最近一次提交后的结果。
  • 提交:可以计划改动(把它们添加到缓存区),将改动提交到了 HEAD,但是还没到提交到远端仓库。
  • 拉取:从远端仓库拉取最新版本状态,特别是在其他人员有所改动之后。
  • 推送:改动现在已经在本地仓库的 HEAD 中了。这时可以使用它将这些改动提交到远端仓库。
  • 分支:分支是用来将特性开发分离出来的。在创建仓库的时候,master 是“默认的”。创建分支将可以从主线开发上分离开来,然后在不影响主线的同时继续工作,完成后再将它们合并到主分支上。
  • 合并: 将分支功能并入主分支。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×