用Git管理你的代码
(以sicnu gitlab为例)
一、什么是Git
Git是一个分布式的版本管理系统。
从定义上来说,Git有两个值得注意的地方:版本管理和分布式。
(1)版本管理
版本管理顾名思义就是对文档或程序的版本进行管理(git主要是针对文本文件管理)。当你将某一工作目录使用git进行管理后,此工作目录下的任何文件的修改都会被git记录,这可以让你在任何时候回退和查看其中某一个版本。
(2)分布式
相对于SVN等版本管理工具,git是分布式的,你创建的每一个git仓库都是独立的,不需要像SVN一样去一个中央服务器上传或拉取文件。
图1.1 SVN 中央服务示意图
图1.2 Git分布式服务示意图
那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同学也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同学病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑(github、gitlab等远程仓库就相当于这个中央服务器),但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
二、什么是GitLab、Github
如上文所说,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,github、gitlab就扮演这这个角色。
当你往远程仓库提交本地版本时,这些远程仓库其实底层也是执行的一系列git命令,只是这些操作被自动化了,让我们在使用时有更好的体验。除此之外,远程仓库还能为我们提供很多额外的服务,比如团队管理,自动化构建和部署(CI/CD)等等。下面我们就将从本地git和连接到gitlab进行学习(以下的远程仓库主要以gitlab说明)。
三、Git基本使用
(提前安装git到你的系统,https://acm.sicnu.edu.cn/storage/programs/Git-2.29.2.2-64-bit.exe )
你可以在桌面或者任意文件夹中,使用鼠标右键打开 git bash
在这个bash中你可以执行许多linux 的命令,当然,git命令也可以。
一下两条命令可以配置你的个人信息,这个信息主要用于git识别每次的提交是谁提交的。并且推送到远程仓库后,gitlab会根据你的邮箱,自动识别你在gitlab中的用户,所以建议git本地配置的邮箱要和gitlab的邮箱一致。
1
2
git config --global user.name "your name"
git config --global user.email "your email"
(1)建立本地git仓库
git仓库的建立一般有两种方法:在本地通过git init
建立一个仓库;以及通过git clone
克隆一个远程已存在的仓库(注意从远程拉取仓库只有通过git clone
拉取到本地才有版本控制信息,如果是下载zip文件的方式,只会下载代码,不会有git版本控制信息),当然这种情况是你提前在gitlab上建立了仓库。这里我们先讲如何在本地创建远程仓库。
1. 进入你想要创建git仓库的文件夹
这里以test-git文件夹为例
2. 初始化一个git仓库
使用git init
命令初始化一个git仓库
执行这个命令后,目录下会自动创建个.git
文件夹,这个文件夹是隐藏的,所有的版本控制信息都在这个文件夹中,删除这个文件夹,相当于git仓库也删除了。
3. 提交修改
版本控制的主要目的就是记录每一个版本的修改情况,下面我们通过简单的例子来演示一下。
首先在工作目录下建立一个文件reademe.txt
, 并随便写一些内容。比如first write here
.
此时使用git status
查看工作区状态:
git 发现了这个新文件,并且显示这个文件没有被跟踪,根据提示use "git add" to track
, 我们使用git add .
把文件提交到暂存区,并且开始跟踪这个文件的修改。注意这个.
是表示把目录下所有没有track或没有加入暂存区的文件都加入暂存区,如果你只想把某个文件加入暂存区,就把.
换成相应文件的路径。
执行add操作后,再看看git的状态。
现在git提醒我们, 这个文件已经可以提交了,说明它已经被跟踪修改而且加入到和暂存区。所以我们使用git commit
提交这一次的修改。
这就完成了一次版本提交,-m
是给这次版本提交一些描述信息,以方便我们知道这次版本提交是做了什么了,比如上面是“first commit
“。
使用git log
可以看到历次的提交信息。
到此git最基础的操作已经完成了!
然后我们试试修改一下这个文件,多写一行”add one line.
“
此时再看看git的状态。
git提示我们这个文件已经被修改了,但是还没有准备好被提交,所以我们先add到暂存区,再提交。
这时再看提交历史:
可以看到两次提交的信息。
这里只是简单介绍git的使用,更多内容比如创建分支,合并分支,版本回退等操作,请自行学习,推荐学习资源:
Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)
(2)远程仓库
1.首先在 SICNU GitLab创建一个账户:
https://acm.sicnu.edu.cn/gitlab/
2.新建一个仓库(项目)
填写相关项目信息,由于是我们自己学校的远程仓库,所以可见性一般选内部就好。
创建成功后,仓库是空的,根据下面的提示,我们是有一个已有的本地仓库,需要推送到gitlab,所有按照它提示的操作进行。
git remote rename origin old-origin
这一个命令不需要做,因为我们之前没有添加过其他远程仓库。
git push
之后我们的本地仓库就推送到了gitlab!
提交记录也可以更方便的看到:
还可以查看每次提交的文件差异:
注意:推送时的操作我是使用的ssh协议推送的,如果你们没有配置ssh,默认是https协议传输。
提示的命令样式如下:
git remote add origin https://acm.sicnu.edu.cn/gitlab/xxxx
。
https协议会提示输入gitlab的用户名和密码。
如果你觉得输入密码麻烦,就上网自行学习一下如何使用ssh吧!
ssh公钥的放置位置:
原创作品,转载请注明来源 https://hebicheng.github.io