【软件构造课程相关】Git简单操作说明

Git简介

​ Git(The stupid content tracker)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,Git的开发者Linus Torvalds称其为傻瓜内容跟踪器。

​ Git 是基于Linux内核开发的版本控制工具。与常用的CVS, Subversion等集中式版本控制工具不同,它采用了分布式版本库的方式。集中式版本控制系统,版本库是集中存放在中央服务器的,在编码用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始编码,再把修改后的版本推送给中央服务器,这一系统最大的毛病就是必须联网才能工作。而分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候就不需要联网了,因为版本库就在你自己的电脑上。不同的人只需把各自的修改推送给对方,就能实现多人协作。和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。此外,Git还具有极其强大的分支管理能力。

Git原理

​ Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。我们先来谈谈一些名词解释:

​ 工作区就是你在电脑里能看到的目录,比如你完成的项目可能放在C:/Users/86186/Desktop/Project/中,就可以将其视为一个工作区。

​ 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

​ Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。而GitHub网站就是专门提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。

​ Git中几个重要的概念工作区、暂存区、本地仓库和远程仓库的关系图解如下:

Git基本操作

初始化一个Git仓库

​ Git的下载较为简单,网上有相关的很多教程在此就不赘述了。当下载并且配置完Git后,如何使用它来处理项目版本管理呢?首先要进行初始化Git仓库操作。在你编程完成的Project目录中右键选择”显示更多选项“,再选择”Open Git Bash here”,就可以调出Git命令窗口。通过git init命令就可以把Project目录变成Git可以管理的本地仓库,而且告诉你这是一个空的仓库(empty Git repository),同时当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的。

$ git init
Initialized empty Git repository in C:/Users/86186/Desktop/Project/.git/

添加文件到Git仓库

​ 现在假设我们已经写好了一个文件file1.txt,该怎么将其添加到个人仓库中呢?首先,一定要将该文件放到刚才的Project目录或其子目录下,因为这是一个Git仓库,如果放到其他地方Git将找不到这个文件。

​ 接着,用命令git add把文件添加到仓库。执行上面的命令,没有任何显示,说明添加成功。

$ git add file1.txt

​ 最后,用命令git commit把文件提交到仓库。其中,-m后面输入的是本次提交的说明,可以输入任意内容,最好是有意义的,这样你就能从历史记录里方便地找到改动记录。git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的file1.txt文件);11 insertions:插入了11行内容(表明file1.txt有11行内容)。

$ git commit -m "wrote a file1"
[master (root-commit) eaadf4e] wrote a file1
 1 file changed, 11 insertions(+)
 create mode 100644 file1.txt

​ 当然,这种方式一次只能添加一个文件到Git仓库,显然是不能够满足需求的。如果想一次性添加很多个文件怎么办呢?由于commit可以一次提交很多文件,因此只需在add中做文章。当然可以逐个文件均进行add操作,再一起commit,但你可以选择一个更简便的方式,全部add

$ git add .

​ 指令实现过程大致如图:

git-repo

添加远程仓库

​ 前面已经提过远程仓库的概念,关于Github账号的注册以及如何在Github中创建远程仓库,可自行搜索,不再赘述。

​ 现在,我们从你新建的远程仓库中复制HTTPS下的url,接着在刚才的本地仓库中输入以下指令(其中······指的就是url链接)。添加后,远程库的名字就是origin,这是Git默认的叫法,此时本地仓库已与之关联。

$ git remote add origin ······

把本地仓库的内容推送到GitHub仓库

​ 前面工作准备完毕后,就可以把本地库的所有内容推送到远程库上。

​ 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样。

$ git push -u origin master

​ 从现在起,只要本地作了提交,就可以通过命令,把本地master分支的最新修改推送至GitHub。

$ git push origin master

其他操作

​ 由于本人使用Git仅用于实验的提交,了解以上原理和操作足矣,关于Git的其他实用的操作并未做过多了解和实践,可能会再以后作出补充,敬请期待。

posted @   秒速五厘米。  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示