图中,服务器端有一个代码库“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生成密钥对。
ssh-keygen -t rsa -C "blueberry@mycom.com" 执行该语句后,工具会提示你给即将要生成的密钥对设置一个密码,可以不设置。如果不设置,在使用SSH秘钥的时候系统不会要求你输入任何密码。这里我们输入两次回车,让密码保持为空。除非你认为你的电脑会丢,而且丢失之后有人会破解你的系统密码,然后使用你的设备破坏掉我们项目代码库,否则都不需要加密码。个人认为上述意外发生的几率非常非常低,几乎没有)
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/blueberry/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/blueberry/.ssh/id_rsa.
Your public key has been saved in /c/Users/blueberry/.ssh/id_rsa.pub.
其中,“标题”这个名字看起来有点怪异,它的作用是给你导入的这个公钥指定一个唯一的标识名,一般用“用户姓名@设备名”这种方式来命名。总之,就是要保证其唯一。 3.5 测试SSH配置
使用以下命令来测试SSH访问:
ssh git@code.aliyun.com 之后,你能看到屏幕上显示确认连接信息,输入yes后回车,将看到如下信息:
RSA key fingerprint is SHA256:ZrA2Zqyyyyyw4zytCyyyyyyMaS2LDH74I7sMPtQIG0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'code.aliyun.com,120.55.150.20' (RSA) to the list of known hosts.
**** Welcome to aliyun Code ****
Hi blueberry, you have successfully connected over SSH.
To clone a hosted Git repository, use:
git clone git@localhost/REPOSITORY_NAME.git
Connection to code.aliyun.com closed.
至此,我们的Kelude远程代码库就创建好了。 4 使用Git进行版本变更管理 4.1 创建本地库
其实版本管理这个东西,就是本地一份数据,服务器上一份数据。每个成员在他们的本地对受管资源进行编辑修改,之后提交给自己本地的版本库。然后,在条件允许的情况下将本地的变更push到远程库中,以便其他成员可以使用你对数据进行的变更。
原文参考:
Although you can technically push changes to and pull changes from individuals’ repositories, doing so is discouraged because you can fairly easily confuse what they’re working on if you’re not careful. Furthermore, you want your collaborators to be able to access the repository even if your computer is offline — having a more>--Reference: Git on the server
Okay,废话不多说。
4.1.1 在本地创建项目文件夹
4.1.2 将项目文件夹初始化成本地Git版本库
4.2 将本地库链接到Kelude远程库上
下面我们来看看如何从Kelude将我们刚刚创建的testgit repositorycopy到本地来。
先创建一个文件夹,对应Kelude上的testgit项目空间:
mkdir testgit 然后进入这个文件夹:
cd testgit 初始化这个testgit文件夹:
git init 显示结果:
Initialized empty Git repository in i/workspace/Examples/testgit/.git/ 接着,我们要将服务器端的原始库添加到我们本地的git项目文件夹,也就是testgit上:
git remote add origin git@code.aliyun.com:blueberry/testgit.git 有关git remote和add命令的使用方法,可以上网自己查找。网上有很多说明详细的文档可供参考。origin是远程服务器端的原始库的别名,也就是服务器端原始库testgit库的别名(系统默认的,约定的)。
我在这个项目库文件夹中创建了一个New Text Document.txt文件。
将当前目录下的所有文件都加入到“待提交”列表中:
git add . 提交改变的文件:
git commit -m "comments here" 提交命令执行成功后:
[master (root-commit) a334cd8] the first file
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 New Text Document.txt
最后是将代码推到服务器端:
$ git push -u origin master
Counting objects: 3, done.