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 -> 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