深度解析如何使用Linux中的git操作
1.如何理解版本控制 →Git&&gitee||github
多版本控制面对善变的甲方
版本控制是一种用于管理文件或代码变更的系统,帮助团队或个人追踪项目的历史记录,并支持多方协作开发。它在软件开发和文档管理中尤为重要,但也适用于其他需要追踪更改的领域。版本控制系统(Version Control System,VCS)能让你查看文件的历史版本,合并多个贡献者的修改,并在出现问题时恢复到早期版本。
git是一个客户端也是一个服务器
git是一个版本控制器
gitee||github是一个基于gitee的网站管理平台
2.Git的历史
Git是一个分布式版本控制系统,由林纳斯·托瓦兹(Linus Torvalds)于2005年创建,用于管理Linux内核的开发。它的历史充满了技术突破和社区协作的故事,以下是Git的起源及其发展过程的简要概述:
背景:版本控制的需求
在Git诞生之前,Linux内核开发团队使用的是一个名为BitKeeper的专有分布式版本控制系统(DVCS)。尽管BitKeeper在技术上表现优异,但其闭源性质对自由软件社区来说始终存在争议。
- 事件导火索:BitKeeper的授权问题 2005年,BitKeeper的免费使用许可政策发生变化,Linux内核开发团队不再能够免费使用这款工具。这一危机促使林纳斯·托瓦兹决定开发一个开源的替代品,用于满足Linux内核开发的需求。
Git的诞生
林纳斯在几天内编写了Git的第一个版本,并于2005年4月7日公布。他的目标是创建一个:
-
快速的系统:能够处理大规模的代码库。
-
简单的设计:易于使用和维护。
-
分布式架构:允许开发者在本地进行版本管理,而无需依赖中心服务器。
-
强大的数据完整性:确保版本控制中的每一项变更都可以被验证。
名称的由来
“Git” 是林纳斯对自己“幽默的”描述——在英国俚语中,“git” 是一个贬义词,意为“愚蠢的人”。林纳斯选择这个名字,部分原因是他自嘲,同时也因为名字短小且易记。
Git的早期发展
-
首次发布(2005年4月7日)
Git的第一个版本是一个极简的实现,主要用作工具链的一部分,目标是实现Linux内核的高效管理。 -
快速迭代
在随后的几个月内,Git迅速完善,加入了许多核心功能,比如分支管理和合并机制。 -
社区贡献
尽管最初是为Linux内核开发设计的,Git很快吸引了其他开源项目的兴趣,成为主流的版本控制工具。
Git的核心特性
以下几个特性奠定了Git在版本控制领域的统治地位:
-
分布式架构:每个开发者都有完整的代码库副本,支持离线开发。
-
强大的分支模型:Git的分支操作快捷高效,方便团队并行开发。
-
数据完整性:所有数据都通过SHA-1哈希加密保存,确保版本历史的安全性。
-
高效性能:特别是在处理大规模代码库时表现突出。
Git的普及
-
GitHub的出现(2008年)
Git的流行离不开GitHub的贡献。2008年,GitHub作为一个基于Git的代码托管平台上线,提供了易于使用的图形界面和协作工具,使Git更加友好。随着GitHub成为开源项目的集中地,Git也被越来越多的开发者采用。 -
企业采用
随着Git的成熟,越来越多的企业开始采用Git作为其主要的版本控制系统,取代了传统的工具如SVN(Subversion)和CVS。
Git的现状和未来
到今天,Git已成为版本控制系统的事实标准,被用于从个人项目到大型企业软件开发的各种场景。其生态系统(如GitHub、GitLab、Bitbucket)也不断扩展,为开发者提供了全面的协作工具。
- 持续改进
Git的开发仍然活跃,不断添加新功能和优化性能,以适应现代软件开发的需求。
重要的里程碑
时间 | 事件 |
---|---|
2005年4月 | Git诞生,用于替代BitKeeper。 |
2005年6月 | Git 2.6发布,首次实现了完整的分支和合并支持。 |
2008年 | GitHub成立,推动了Git在开源社区中的普及。 |
2010年代 | Git成为主流版本控制系统,被各大企业广泛采用。 |
2020年代 | Git仍然是版本控制的领导者,持续影响软件开发的最佳实践。 |
结语
Git的成功不仅仅是技术上的胜利,更是开源文化和协作精神的体现。从解决一个具体的技术问题,到如今统治全球软件开发领域,Git的历史展示了如何通过开放和创新改变世界。
3.Git的操作
我们使用yum install git
进行git工具间的安装操作
然后可以使用命令git version
进行当前git版本的查看操作
我们第一次使用的时候系统会让我们输入username 和我们email
我们先进行gitee仓库的创建,然后点击这个克隆/下载就行了
我们将这个链接进行复制的操作
就是相当于我们拿到了这个仓库的链接
我们现在这Linux中将我们的远端仓库拉取到我们的Linux终端里面
输入命令 git clone [https://gitee.com/caijiuuyk/c-learn.git](https://gitee.com/caijiuuyk/c-learn.git)
将我们gitee中的仓库拉取到本地
然后我们就成功的将我们的远程仓库克隆到本地了
我们进入到这个克隆的仓库
可以看见我们的仓库里面的文件都被克隆下来了
我们可以发现我们的当前目录下存在一个.git文件,这是一个目录,这个被称为隐藏的本地仓库
.git里面包含的是我们所有的历史修改记录
git在提交的时候,只会提交变化的部分
那么现在我们就能在当前的目录下进行代码的新增操作了
我们创建一个code.c的文件,写下一段简单的代码保存并退出
所以我们当前文件夹下就多出了一个源文件了
但是我们的这个文件并没有被添加到.git仓库里面
我们使用命令git add code.c
将我们的文件添加到.git仓库,但是还是没有添加到本地仓库里面
我们仅仅只是将文件添加到我们的暂存区里面
我们现在创建一个code1.c的文件,并且将我们的code.c的内容重定向操作到code1.c里面
[kk@hcss-ecs-28de c-learn]$ touch code1.c
[kk@hcss-ecs-28de c-learn]$ vim code1.c
[kk@hcss-ecs-28de c-learn]$ cat code.c
#include <stdio.h>
int main()
{
printf("新年快乐!!!");
return 0;
}
[kk@hcss-ecs-28de c-learn]$ cat code.c > code1.c
[kk@hcss-ecs-28de c-learn]$ cat code1.c
#include <stdio.h>
int main()
{
printf("新年快乐!!!");
return 0;
}
[kk@hcss-ecs-28de c-learn]$
我们再次将这个文件添加我们的暂存区
git add code1.c
这个暂存区可以进行多次的添加操作
这个时候我们.git内部就有一个git仓库了
那么现在我们能直接将我们前几次添加到暂存区的文件推送到我们的git仓库里面
那么有了这个暂存区我们可以在本地进行多次add,然后一次进行提交的操作
我们可以使用git status
查看当前我们的暂存区中的新添加的文件有哪些
[kk@hcss-ecs-28de c-learn]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: code.c
# new file: code1.c
#
[kk@hcss-ecs-28de c-learn]$
如果我们不想让这个文件提交的话我们可以使用git reset HEAD <filename>
将这个文件在暂存区进行删除操作。将添加的文件移除操作
那么现在我们想一次性将这两个文件提交到我们的本地仓库里面
我们使用命令git commit -m "新增两个源文件"
这里的-m就是我们的日志信息,这个选项我们一定要进行添加的操作
-m后面的介绍一定要清楚
我们可以使用git log
查看我们的提交的历史
但是我们现在需要将我们本地的仓库和远端的仓库进行同步的操作,那么我们该怎么做呢?
那么这里的第三步就是git push
了,提交/同步
我们需要记住我们的账号密码才能在Linux上面进行代码的提交操作
如果我们将本地的这个gitee的仓库删除了
我们想要查看我们历史提交的文件
我们直接再次将这个仓库克隆到本地就行了
因为我们的git的版本管理只进行管理源文件,所以像obj、exe后缀的文件我们是不接收的
但是我们怎么将这些文件进行忽略呢?
我们的git仓库里面存在一个隐藏文件gitignore
可以忽略掉非源文件
我们直接将obj类的文件添加到非上传的名单里面
我们添加两个.c文件
这里我们使用git status
可以查看到系统检测到我们的的.gitignore
文件是被修改了的
以及新增了一个test2.c文件
没有我们上面创建的obj文件,说明已经被忽略了
我们按照正常流程进行推送到gitee的操作
我们只会将我们的修改的gitignore
和我们新增的源文件进行上传
其他的文件是会被忽略的
gitignore
里面保存的是我们需要忽略的特定后缀的文件列表
下面是我们在Linux进行源文件的上传提交操作
在Windows里面进行git的操作
我们确保我们的Windows里面装了gitee
安装的地址:https://git-scm.com/downloads/win
我们直接在对应的命令行进行源代码文件的push就行了
我们如果在Windows版本下进行代码的更改操作的话,我们在Linux再进行更改一次的话这个我们是否能再次进行更改操作呢?
因为我们的这个代码文件冲突了,我们Windows里面已经对这个文件进行修改了
我们在Linux里面再次进行修改的话是不可行的
那么我们如何进行解决操作呢?
输入命令git pull
将远端和本地进行同步操作
直接将我们在Windows上面进行的修改同步到了我们Linux这里了
远端仓库相比较任何人都是最新的
为什么会出现冲突?提醒本地用户,你要和远端仓库进行同步的操作