开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【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、增删改查版本库中的资源。

1  准备工作


1.1  注册阿里云账户并开通Kelude服务。

由于本文需要用git连接Kelude SCM服务(阿里云code),您可以根据自己的需要注册开通该服务。本文不再赘述此步骤,具体操作请参见此处

2  安装git windows客户端


2.1  下载

点此下载(这是2.10.1的64位版,请根据你自己的情况下载相应版本)

wKiom1gPjA2yUDPRAAFnfj8slk8870.png

2.2  双击安装文档安装git

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

wKioL1gPjN7xO1cMAAA_6wZmtEY536.png-wh_50

wKioL1gPjN7S4mGEAAAwTm_VFlc445.png-wh_50

wKiom1gPjN-wFWsCAAA5Eerrzx4576.png-wh_50

wKioL1gPjN_x0RceAAAxV6c7WmE510.png-wh_50

wKiom1gPjN-itON9AABLdNchZWc951.png-wh_50

wKioL1gPjN-R9iqqAABMsLryFvw076.png-wh_50

wKiom1gPjN-zhXseAABLdJGMvzk160.png-wh_50

wKioL1gPjN_CKvkVAAA7JSOoebU156.png-wh_50

wKiom1gPjODw5fkTAAAiAUHH3LM066.png-wh_50

wKiom1gPjODC7na8AAAq6cp0ovc132.png-wh_50

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

wKiom1gPjWyAe-t1AAAPCnACang634.png-wh_50

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

3  使用Git Bash


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

wKiom1gPkEnBAnHHAAAaudCyQaU237.png

3.1  基本信息设置

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

1
git config --global user.name "BlueBerry"

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

1
git config --global user.email "BlueBerry@mycom.com"

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

1
git config --list

结果:

wKiom1gPk6WRYiYMAAA5vETkt28284.png


3.2  使用Kelude创建项目代码库

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

wKioL1gPlS2wXW3aAACDF9t8Rz4397.png

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

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

wKiom1gPmP3ynK5jAAA7Cph9C1Q284.png

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

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

wKiom1gPnD6jTXmCAABC0svDEkw463.png

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

3.3  配置SSH Key,为Git客户端做访问验证

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

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

wKioL1gPog-DH6C4AABwIyotQNY588.png

图中,服务器端有一个代码库“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生成密钥对。

1
ssh-keygen -t rsa -C "blueberry@mycom.com"

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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.
The key fingerprint is:
SHA256:1lk5OEIDe+9j/Mmpxhz33jeeWxkF2VwI00x+/tHf2eg blueberry@mycom.com
The key's randomart image is:
+---[RSA 2048]----+
|      ..o   o=o=o|
|       o . . +=.o|
|      . o o + . o|
|       . + * . oo|
|        S + S  oo|
|       . o. .  .X|
|         o=o ..o*|
|         .++ +.o+|
|         ...=.E+=|
+----[SHA256]-----+

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

3.4  设置Git远程库

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

wKiom1gPrIOCTUYsAAAnLn3Z2Rk601.png

wKiom1gPrIOjddXNAAApEQudzCE758.png

wKioL1gPrIPCPx0DAAAH3RIlz24101.png

wKiom1gPrIOBA6-gAAB1d_oBS0o130.png

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

3.5  测试SSH配置

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

1
ssh git@code.aliyun.com

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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 reliable common repository is often useful. Therefore, the preferred method for collaborating with someone is to set up an intermediate repository that you both have access to, and push to and pull from that. We’ll refer to this repository as a "Git server"; but you’ll notice that it generally takes a tiny amount of resources to host a Git repository, so you’ll rarely need to use an entire server for it.--Reference: Git on the server


Okay,废话不多说。

4.1.1  在本地创建项目文件夹

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

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



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

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

1
mkdir testgit

然后进入这个文件夹:

1
cd testgit

初始化这个testgit文件夹:

1
git init

显示结果:

1
Initialized empty Git repository in i/workspace/Examples/testgit/.git/

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

1
git remote add origin git@code.aliyun.com:blueberry/testgit.git

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

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

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

1
git add .

提交改变的文件:

1
git commit -m "comments here"

提交命令执行成功后:

1
2
3
[master (root-commit) a334cd8] the first file
 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 New Text Document.txt

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

1
2
3
4
5
6
7
8
$ git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 222 bytes | 0 bytes/sdone.
Total 3 (delta 0), reused 0 (delta 0)
remote: Updating references: 100% (1/1)
To code.aliyun.com:blueberry/testgit.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

6、代码库文件的增删改同步操作





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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
优化求解器之AMPL建模工具简介
在使用优化求解器解决实际问题的过程中,通过程序接口输入优化模型往往会耗费大量时间和精力,且容易出错。为了简化这一步骤,建模语言应运而生。建模语言最初的概念是在1976年提出的,后经过不断的发展,形成了如今蓬勃的技术、产品和应用市场。建模语言往往并不对实际问题进行求解,而专注在模型建立本身,其目的是将复杂的优化问题简化为抽象的代数表达形式;让用户在开发上只需要专注于代数模型的建立,模型完成后再将数据分别引入。如此不但加快开发流程,更有效减少模型输入错误的可能性。接下来我们将发布一系列文章,对常见的AMPL, Pyomo, PuLP等建模语言进行简要的介绍。
889 0
Git+阿里云配置SSH公钥(tortoise git )
Git+阿里云配置SSH公钥(tortoise git )
2746 0
再次搞定 Ali 云函数计算 FC
原本早就该写完了微信 SDK 授权服务上云计划由于对 Ali 云函数计算 FC 的不熟悉遇到了很多的坑,再前面的文章中还吐槽了一通。在服务顺利跑通后,这回实打实的来总结一下顺利上云的保守指南~
22758 0
特稿|过去5年,阿里云是如何打造云原生数据库PolarDB的
阿里云在云原生数据库领域的自研创新突围。
23074 0
初识Serverless函数计算
Serverless 并不是没有服务器,而是开发者不再需要关心服务器。在传统 Serverful 架构下,部署一个应用需要购买服务器,部署操作系统,搭建开发环境,编写代码,构建应用,部署应用,配置负载均衡机制,搭建日志分析与监控系统,应用上线后,继续监控应用的运行情况。而在 Serverless 架构下,开发者只需要关注应用的开发构建和部署,无需关心服务器相关操作与运维,在函数计算架构下,开发者只需要编写业务代码并监控业务运行情况。这将开发者从繁重的运维工作中解放出来,把精力投入到更有意义的业务开发上。
20069 0
【AI征文】对DeepRec认识以及了解
对DeepRec认识以及了解
57400 0
Tensorflow Serving部署模型与调用
本文以mnist为数据集,使用keras 构建CNN网络,将训练获取的模型通过Tensorflow Serving方式部署提供Rest Full接口,分别使用PostMan和Python调用服务,代码编辑调试使用阿里云PAI DSW实例,模型部署使用阿里云ECS虚拟机。
5967 0
业务中台之上的低代码应用开发平台
中台低代码平台帮助开发者掌握全栈能力,促进开发者提高工作效率,基于企业数字化业务能力组件,可以实现业务应用的敏捷按需装配,成为企业组装式应用创新平台,进而实现企业业务能力的持续优化和复用,促进从组织到企业甚至行业的业务能力集约与创新。
91686 0
23704
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载