天天看点

【Step by step】win10下使用git(修改中)

git已经流行了有段时间了,但是由于git一直是linux世界的优秀产物,很多windows平台上的小伙伴难以窥探其风采。尽管我们可以工cygwin来使用git,但是仅仅配置cygwin就需要很长时间,并非普通用户可以实现。幸运的是,git官方给出了一个windows平台的整合安装包,现在我们也可以在windows平台上使用git了。

下面,我将以自己的机器环境为例,逐步向大家介绍如何在windows平台上安装使用git。

您在阅读完本文后,应该可以:

1、在windows安装git,并进行简单的配置。(win10 64bit + git 2.10.1)

2、使用git在aliyun Kelude上创建一个代码库。(需要您事先注册阿里云账户并开通阿里云code服务)

3、将本地库连接到aliyun Kelude远程库。

4、增删改查版本库中的资源。

<a href="http://s5.51cto.com/wyfs02/M00/89/53/wKiom1gPjA2yUDPRAAFnfj8slk8870.png" target="_blank"></a>

安装过程比较简单,全部采用默认设置就ok。

<a href="http://s2.51cto.com/wyfs02/M00/89/51/wKioL1gPjN7xO1cMAAA_6wZmtEY536.png-wh_500x0-wm_3-wmp_4-s_4283275322.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M00/89/51/wKioL1gPjN7S4mGEAAAwTm_VFlc445.png-wh_500x0-wm_3-wmp_4-s_3633310926.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/89/53/wKiom1gPjN-wFWsCAAA5Eerrzx4576.png-wh_500x0-wm_3-wmp_4-s_1479895486.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/89/51/wKioL1gPjN_x0RceAAAxV6c7WmE510.png-wh_500x0-wm_3-wmp_4-s_1546413929.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/89/53/wKiom1gPjN-itON9AABLdNchZWc951.png-wh_500x0-wm_3-wmp_4-s_3753867574.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/89/51/wKioL1gPjN-R9iqqAABMsLryFvw076.png-wh_500x0-wm_3-wmp_4-s_2837778506.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/89/53/wKiom1gPjN-zhXseAABLdJGMvzk160.png-wh_500x0-wm_3-wmp_4-s_923309434.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/89/51/wKioL1gPjN_CKvkVAAA7JSOoebU156.png-wh_500x0-wm_3-wmp_4-s_1679074838.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M02/89/53/wKiom1gPjODw5fkTAAAiAUHH3LM066.png-wh_500x0-wm_3-wmp_4-s_338561298.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M00/89/53/wKiom1gPjODC7na8AAAq6cp0ovc132.png-wh_500x0-wm_3-wmp_4-s_107719483.png" target="_blank"></a>

至此,安装结束。你可以在windows开始菜单中找到Git应用程序组,打开后有三个程序,如下图:

<a href="http://s1.51cto.com/wyfs02/M01/89/53/wKiom1gPjWyAe-t1AAAPCnACang634.png-wh_500x0-wm_3-wmp_4-s_2678448254.png" target="_blank"></a>

本文主要使用Git Bash(也就是命令行方式)实现我们的目标。

下面的大部分操作都要通过Git Bash这个命令行终端来完成,我们需要先打开这个客户端。

<a href="http://s1.51cto.com/wyfs02/M01/89/53/wKiom1gPkEnBAnHHAAAaudCyQaU237.png" target="_blank"></a>

在使用git前,需要在git客户端上设置一些基本信息,比如你的名称,你的email地址等。使用如下命令进行设置:

<code>git config --global user.name </code><code>"BlueBerry"</code>

这条命令的意思是给git设置一个全局用户名(显示名),这样,以后当你在这台设备上使用git时,签名会默认使用“BlueBerry”,不用每次都重新设置。另外,Email信息也是非常必要的。作为teamwork的一份子,请保持这种良好的习惯“行不更名,做不改姓”。设置Email地址请用如下命令:

<code>git config --global user.email </code><code>"[email protected]"</code>

当你设置好全局信息后,你可能需要看一下你设置的信息,请使用如下命令:

<code>git config --list</code>

结果:

<a href="http://s3.51cto.com/wyfs02/M02/89/53/wKiom1gPk6WRYiYMAAA5vETkt28284.png" target="_blank"></a>

登录Aliyun Kelude服务,在上面创建一个代码库testgit,如下图:

<a href="http://s3.51cto.com/wyfs02/M02/89/51/wKioL1gPlS2wXW3aAACDF9t8Rz4397.png" target="_blank"></a>

我在Kelude上创建了一个名为testgit的代码库,代码库可见等级为私有。也就是说,这个代码库的管理员只能是我本人,别人无权管理(只能使用)。

创建好代码库之后,Kelude会显示出你刚刚创建的这个代码库的相关信息,如下图:

<a href="http://s1.51cto.com/wyfs02/M00/89/55/wKiom1gPmP3ynK5jAAA7Cph9C1Q284.png" target="_blank"></a>

注意看上图中“创建新版本库”、“已存在的文件夹或Git仓库”这两个部分。其实这两个部分已经简要介绍了我们下文中需要讲解的内容。如果您是高级用户,到此,您应该可以把git用起来了。如果您对于如何使用git还不是特别清晰,我建议您跟着本文继续往下看。

您可能注意到了,Kelude会提示新创建的代码库需要SSH的秘钥(SSH Key),如图:

<a href="http://s1.51cto.com/wyfs02/M02/89/55/wKiom1gPnD6jTXmCAABC0svDEkw463.png" target="_blank"></a>

这里要多介绍一下,用户可以通过用户名、密码的方式访问git代码库,也可以通过SSH的方式来访问,官方推荐使用SSH的方式来访问。而且,通过SSH的方式来访问会更便捷一些。下面我们就来看看如何配置git的SSH访问。

让我先来讲解一下Git的SSH原理(我蒙的,不一定准确,欢迎指正)。

看下图:(画的丑,见谅)

<a href="http://s1.51cto.com/wyfs02/M00/89/53/wKioL1gPog-DH6C4AABwIyotQNY588.png" target="_blank"></a>

图中,服务器端有一个代码库“blueberry/testgit”,有两个client端要访问它,分别是客户端A和客户端B。那么,怎样通过SSH来访问呢?是这样的,客户端A在本地使用SSH工具创建一个密钥对(公钥、私钥,也就是一把钥匙和一把锁),公钥就是图中的那把深绿色的锁A,私钥就是客户端A手里拿着的钥匙A。客户端A的用户将公钥发给testgit代码库的管理员,管理员将客户端A的公钥添加到blueberry账户的SSH密钥库中(就是告诉Kelude服务器现在有一扇门通往testgit代码库,门上有把锁,只允许能开锁的客户端进到门里面来)。这样一来,客户端A手里有开启锁A的钥匙(私钥),自然就能访问testgit代码库了。

同理,客户端B如果想访问testgit,也需要使用SSH工具创建一个密钥对(就是钥匙B和锁B),然后将锁B(公钥)发给testgit代码库管理员,管理员将客户端B的公钥添加到blueberry账户的SSH密钥库中(就是告诉Kelude服务器testgit代码库上还有一道门,这道门也有一把锁,只允许能开锁的客户端进到门里面来)。那么,客户端B肯定拥有能打开锁B的私钥B,也就能访问testgit代码库了。

有意思的是,Kelude SSH权限管理并非加载在某一个代码库上,而是加载在创建testgit代码库的账号上。这样一来,如果有blueberry账户访问权限,就可以访问所有在此账户下的代码库。这一点我还没有搞的很清楚,目前只是能用,等我搞搞清楚之后再来订正。

好了,接下来让我看一下如何使用Git Bash生成密钥对。

<code>ssh</code><code>-keygen -t rsa -C </code><code>"[email protected]"</code>

执行该语句后,工具会提示你给即将要生成的密钥对设置一个密码,可以不设置。如果不设置,在使用SSH秘钥的时候系统不会要求你输入任何密码。这里我们输入两次回车,让密码保持为空。除非你认为你的电脑会丢,而且丢失之后有人会破解你的系统密码,然后使用你的设备破坏掉我们项目代码库,否则都不需要加密码。个人认为上述意外发生的几率非常非常低,几乎没有)

<code>Generating public</code><code>/private</code> <code>rsa key pair.</code>

<code>Enter </code><code>file</code> <code>in</code> <code>which</code> <code>to save the key (</code><code>/c/Users/blueberry/</code><code>.</code><code>ssh</code><code>/id_rsa</code><code>):</code>

<code>Enter passphrase (empty </code><code>for</code> <code>no passphrase):</code>

<code>Enter same passphrase again:</code>

<code>Your identification has been saved </code><code>in</code> <code>/c/Users/blueberry/</code><code>.</code><code>ssh</code><code>/id_rsa</code><code>.</code>

<code>Your public key has been saved </code><code>in</code> <code>/c/Users/blueberry/</code><code>.</code><code>ssh</code><code>/id_rsa</code><code>.pub.</code>

<code>The key fingerprint is:</code>

<code>SHA256:1lk5OEIDe+9j</code><code>/Mmpxhz33jeeWxkF2VwI00x</code><code>+</code><code>/tHf2eg</code> <code>[email protected]</code>

<code>The key's randomart image is:</code>

<code>+---[RSA 2048]----+</code>

<code>|      ..o   o=o=o|</code>

<code>|       o . . +=.o|</code>

<code>|      . o o + . o|</code>

<code>|       . + * . oo|</code>

<code>|        S + S  oo|</code>

<code>|       . o. .  .X|</code>

<code>|         o=o ..o*|</code>

<code>|         .++ +.o+|</code>

<code>|         ...=.E+=|</code>

<code>+----[SHA256]-----+</code>

这是生成密钥对之后的反馈信息,你可以在你的用户目录下找到.ssh文件夹,里面有两个文件:id_rsa和id_rsa.pub。.pub那个文件就是那把锁,id_rsa就是那把钥匙。现在我们只需要将id_rsa.pub发给代码库管理员就可以了。

在上一步中,git客户端已经创建了一个密钥对,而且也已近把公钥发到了代码库管理员手里,现在代码库管理员只需要将pub公钥中的信息添加到代码库账号的SSH秘钥库中即可。参考下图:

<a href="http://s2.51cto.com/wyfs02/M00/89/55/wKiom1gPrIOCTUYsAAAnLn3Z2Rk601.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M01/89/55/wKiom1gPrIOjddXNAAApEQudzCE758.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M01/89/53/wKioL1gPrIPCPx0DAAAH3RIlz24101.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M02/89/55/wKiom1gPrIOBA6-gAAB1d_oBS0o130.png" target="_blank"></a>

其中,“标题”这个名字看起来有点怪异,它的作用是给你导入的这个公钥指定一个唯一的标识名,一般用“用户姓名@设备名”这种方式来命名。总之,就是要保证其唯一。

使用以下命令来测试SSH访问:

<code>ssh</code> <code>[email protected]</code>

之后,你能看到屏幕上显示确认连接信息,输入yes后回车,将看到如下信息:

<code>RSA key fingerprint is SHA256:ZrA2Zqyyyyyw4zytCyyyyyyMaS2LDH74I7sMPtQIG0.</code>

<code>Are you sure you want to </code><code>continue</code> <code>connecting (</code><code>yes</code><code>/no</code><code>)? </code><code>yes</code>

<code>Warning: Permanently added </code><code>'code.aliyun.com,120.55.150.20'</code> <code>(RSA) to the list of known hosts.</code>

<code>  </code><code>****    Welcome to aliyun Code     ****</code>

<code>  </code><code>Hi blueberry, you have successfully connected over SSH.</code>

<code>  </code><code>To clone a hosted Git repository, use:</code>

<code>  </code><code>git clone git@localhost</code><code>/REPOSITORY_NAME</code><code>.git</code>

<code>Connection to code.aliyun.com closed.</code>

至此,我们的Kelude远程代码库就创建好了。

其实版本管理这个东西,就是本地一份数据,服务器上一份数据。每个成员在他们的本地对受管资源进行编辑修改,之后提交给自己本地的版本库。然后,在条件允许的情况下将本地的变更push到远程库中,以便其他成员可以使用你对数据进行的变更。

原文参考:

Okay,废话不多说。

4.1.1  在本地创建项目文件夹

4.1.2  将项目文件夹初始化成本地Git版本库

4.2  将本地库链接到Kelude远程库上

下面我们来看看如何从Kelude将我们刚刚创建的testgit repositorycopy到本地来。

先创建一个文件夹,对应Kelude上的testgit项目空间:

<code>mkdir</code> <code>testgit</code>

然后进入这个文件夹:

<code>cd</code> <code>testgit</code>

初始化这个testgit文件夹:

<code>git init</code>

显示结果:

<code>Initialized empty Git repository </code><code>in</code> <code>i</code><code>/workspace/Examples/testgit/</code><code>.git/</code>

接着,我们要将服务器端的原始库添加到我们本地的git项目文件夹,也就是testgit上:

<code>git remote add origin [email protected]:blueberry</code><code>/testgit</code><code>.git</code>

有关git remote和add命令的使用方法,可以上网自己查找。网上有很多说明详细的文档可供参考。origin是远程服务器端的原始库的别名,也就是服务器端原始库testgit库的别名(系统默认的,约定的)。

我在这个项目库文件夹中创建了一个New Text Document.txt文件。

将当前目录下的所有文件都加入到“待提交”列表中:

<code>git add .</code>

提交改变的文件:

<code>git commit -m </code><code>"comments here"</code>

提交命令执行成功后:

<code>[master (root-commit) a334cd8] the first </code><code>file</code>

<code> </code><code>1 </code><code>file</code> <code>changed, 0 insertions(+), 0 deletions(-)</code>

<code> </code><code>create mode 100644 New Text Document.txt</code>

最后是将代码推到服务器端:

<code>$ git push -u origin master</code>

<code>Counting objects: 3, </code><code>done</code><code>.</code>

<code>Writing objects: 100% (3</code><code>/3</code><code>), 222 bytes | 0 bytes</code><code>/s</code><code>, </code><code>done</code><code>.</code>

<code>Total 3 (delta 0), reused 0 (delta 0)</code>

<code>remote: Updating references: 100% (1</code><code>/1</code><code>)</code>

<code>To code.aliyun.com:blueberry</code><code>/testgit</code><code>.git</code>

<code> </code><code>* [new branch]      master -&gt; master</code>

<code>Branch master </code><code>set</code> <code>up to track remote branch master from origin.</code>

本文转自 rickqin 51CTO博客,原文链接:http://blog.51cto.com/rickqin/1865681