Git和TortoiseGit

1.简介

     Git是一个开源的分布式版本控制系统,用于敏捷高效的处理任何或大或小的项目。它采用了分布式版本库的方式,不必服务器端软件支持。

2.Git和Svn的区别

  • 1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

  • 2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

  • 3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

  • 4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

  • 5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

     

3.GIT的安装配置

所需文件材料

  1. Git-2.18.0-64-bit
  2. TortoiseGit-2.6.0.0-64bit
  3. TortoiseGit-LanguagePack-2.6.0.0-64bit-zh_CN

注意:因为现在一般的电脑系统位数均为64位,所以仅提供了64位,并且版本需要自己下载。上述的三个文件,曾在多个电脑上部署,可以正常工作。
TortoiseGit是一个开放的Git版本控制系统源客户端,就像一个普通的文件服务器,因为具有界面并且能够以图示的方式显示文件和目录的变化,并能够提示何时改变了那些历史数据,改变人是谁,因此非常方便。
Git则是版本管理的基础功能,通过使用Git的命令行界面,几乎所有的功能均能在Bash命令行下得到实现。唯一的缺点就是不直观。
TortoiseGit其实就是对Git的一个封装起来的程序,用来简化Git的操作。而Language则是TortoiseGit的汉化包。

程序安装步骤

确保程序的安装顺如为Git、TortoiseGit、TortoiseGit-LanguagePack-2.6.0.0-64bit-zh_CN。
安装过程问题不大,根据提示默认安装即可。

 

生成SSH Keys

ssh keys是远程ssh连接的一种基于秘钥方式安全连接起来的秘钥文件。ssh keys是ssh中基于秘钥的安全验证,你可以通过创建公钥和私钥对的方式来完成ssh keys方式的ssh登录验证。首先需要执行的操作是必须在本地开发机上创建一对秘钥,并把公钥的内容放在需要访问的服务器上。如果你连接到ssh服务器上,客户端软件就会向服务器发出请求,请求用你的秘钥进行安全验证。
  服务器收到请求后,先在该服务器上的主目录下寻找你的公用秘钥,然后把它和你发送过来的公用秘钥进行比较。如果两个秘钥一致,服务器就用公用秘钥加密“质询”并把它发送给客户端软件。客户端软件收到质询之后就可以用你的私有秘钥解密再把它发送给服务器。基于ssh keys的登录验证方式可以避免假冒服务器的问题,因为假冒问题获取不到你的秘钥。它比基于用户密码的口令方式更加安全。

为TortiseGit生成SSH Keys

 

 

点击PuTTYgen即可,倘若在工作机上安装了Everything或者Listary等工具,直接搜索该文件即可。该文件的默认目录位于:

C:\Program Files\TortoiseGit\bin

 

 

在Key区域根据提示

Please Generate some randomness by moving the mouse over the blank area


  快速移动鼠标产生随机数以产生Public key。生成Key之后通过点击Save public key把公钥文件保存在当前目录[TortoiseGit\bin]下,命名为id_rsa.pub,然后点击Save private key,把私有文件保存在当前目录下,命名为id_rsa.pri即可。

 

注意:私有秘钥文件是需要保存的,在使用TortoiseGit克隆代码时,需要勾选私钥文件进行加载的,不然会一直提示输入Git服务器的密码

然后需要拷贝生成的公钥文件,全选区域2中的内容即可。把该内容添加到Git 服务器网页个人设置中。参见3.3节

为Git生成公钥

一个重要的问题是,git生成的公钥和TortoiseGit生成的公钥是不一致的

  在3.2.1节生成的秘钥对针对TortoiseGit客户端而言的。因此,需要为Git生成公钥。
首先需要确认你自己是否已经拥有Git秘钥。默认情况下,用户的SSH秘钥保存在~/.ssh目录下,进入该目录下,并列出其中的内容,你便可以快速确认自己是否已拥有秘钥:

$ cd ~/.ssh
$ ls
Authorized_keys2 id_dsa known_hosts
Config id_rsa_pub

需要找到一对以id_dsa或者id_rsa命名的文件名,其中一个带有pub扩展名,另一个则是私钥。.pub文件是公钥,另外一个则是私钥。如果找不到这样的文件,则可以进行下述操作生成秘钥对。在我的工作机上运行上述命令

admin@admin-PC MINGW64 ~/.ssh
$ cd ~/.ssh/

admin@admin-PC MINGW64 ~/.ssh
$ ls
id_rsa id_rsa.pub known_hosts

admin@admin-PC MINGW64 ~/.ssh
$
可以看到秘钥文件对id_rsa和id_rsa.pub
在安装Git软件之后,安装包会自动安装三个应用程序

 

 

可以通过Git Bash 或者Git GUI生成秘钥对。

3.2.2.1 Git UI生成SSH Key
  点击Git GUI应用程序,弹出如下界面

 

 

点击Help->Show SSH Key

 

 

  在点击Generate Key之后,会弹出两个对话框,直接Enter即可。全选生成的秘钥,拷贝,需要把该内容加入到Git服务器网站个人SSH Keys的设置中。可以看到通过该界面方式,程序会自动的把秘钥内容保存在目录

~/.ssh/id_rsa.pub

即,通过该方式生成的秘钥对与Git Bash生成SSH Key其实是一模一样的效果。拷贝到Git服务器个人设置的过程参见3.3

 

3.2.2.2 Git Bash生成SSH Key


在确保目录

~/.ssh/id_rsa.pub

 

不存在id_rsa和id_rsa.pub文件之后,可以通过Git bash命令行通过ssh-keygen产生秘钥对文件。
首先,在桌面或者任意文件目录下通过点击

Shift和鼠标右键

弹出如下界面:

 

 

可以看到Git GUI和Git Bash两个应用程序的入口。直接点击Git Bash即可。

admin@admin-PC MINGW64 ~/Desktop
$ cd ~/.ssh

admin@admin-PC MINGW64 ~/.ssh
$ ls
[ls命令没有列出文件,说明Git秘钥对不存在]
admin@admin-PC MINGW64 ~/.ssh
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/admin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/admin/.ssh/id_rsa.
Your public key has been saved in /c/Users/admin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:MfdeR1XNobRSmgAIWiVPSI4vm2lIxODMrKmatFzZzV0 admin@admin-PC
The key's randomart image is:
+---[RSA 2048]----+
|. .=+o.... o o*|
|B =.+. . = o +|
| X . . o .+ o .|
|o.. + .. . |
|oo . S E. . .|
|+ = o o . .. . . |
|o* o . o . . |
|=.o |
|oo |
+----[SHA256]-----+

admin@admin-PC MINGW64 ~/.ssh
$ ls
id_rsa id_rsa.pub

admin@admin-PC MINGW64 ~/.ssh
$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1oAy1QiN9fXELTTn+ZIRk96Nz7diBrEiJeKuRtTeyUIjCzlOIxCAfP34NdzKj8FPMlHf8u0+ILNUjA26J1IJbxttef3x8IjMGNnawOmJv69SVLncfokK0QtKngzuWcnYYfffyxz4HC5D34ZrEDnicapMdIEVs4olA/O8unL+qOXrrA1gd5rG0Vc7hPHFCo/K73BJaNlxhR3PfalN7Gb0xAaAXeNw6dsHUnadSJd9nAlrn7ySh2aJF6+oGYalcAmCqkwApH/WYAX2BfjBWXg7QufwaWT5+suIdJLDuEeamjzhS0l9SAxvx9JexN0KC4MlSp4W92K8k9vONK0eCfL+h admin@admin-PC

admin@admin-PC MINGW64 ~/.ssh
$
  首先ssh-keygen会确认秘钥的存储位置(默认是./ssh/id_rsa),然后它会要求你输入两次秘钥口令。如果你不想在使用密钥时输入口令,将其留空即可。
然后拷贝id_rsa.pub文件的所有内容到Git服务器的个人设置即可,参见3.3

Git网站添加SSH Keys

使用个人的Git账户登录Git服务器网址,点击头像下方的设置,然后选择出现页面左侧的SSH密钥。

拷贝TortoiseGit和Git生成的两个公钥文件的内容拷贝。

 

 

 

保存两个公钥文件的内容到自己的个人设置即可

 

结果验证

登录Git服务器,然后拷贝SSH的项目URL。

 

 进入你想要拷贝项目的文件目录,例如

D:\Git

然后点击右击空白处,选择Git Bash。键入git clone 命令如下:

admin@admin-PC MINGW64 ~/.ssh
$ git clone git@192.168.0.223:fiso/qw.git
Cloning into 'qw'...
The authenticity of host '192.168.0.223 (192.168.0.223)' can't be established.
ECDSA key fingerprint is SHA256:T/xFtMg6XVeFxyuWXohc7V6UD56eHaoTdVCkW/UsPTQ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.223' (ECDSA) to the list of known hosts.
remote: Counting objects: 11618, done.
remote: Compressing objects: 100% (359/359), done.
remote: Total 11618 (delta 256), reused 501 (delta 192)
Receiving objects: 100% (11618/11618), 745.83 MiB | 26.62 MiB/s, done.
Resolving deltas: 100% (2642/2642), done.
Checking out files: 100% (18760/18760), done.

使用TortiseGit克隆项目

在当前目录下,右击空白处,选择Git克隆[使用Tortoise Git],运行界面如下:

 

 点击确定之后:运行界面如下

 

 注意:确保勾选加载Putty秘钥

 

所遇问题:

Git与TortiseGit所生成的公钥私钥不同,如果想同时使用,将公钥分别加入Git服务器中。

posted @ 2020-01-20 14:03  zda龙  阅读(668)  评论(0编辑  收藏  举报