目录
[1.如何理解版本控制->Git && gitee||github](#1.如何理解版本控制->Git && gitee||github)
[git clone+复制的](#git clone+复制的)
[先git config](#先git config)
[1.git add](#1.git add)
[2.git commit](#2.git commit)
[3.git push](#3.git push)
[1.查看日志 git log](#1.查看日志 git log)
[2.查看状态git status](#2.查看状态git status)
1.如何理解版本控制->Git && gitee||github
不知道你工作或学习时,有没有遇到这样的情况:我们在编写各种文档时,为了防止文档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出一个副本
每个版本有各自的内容,但最终会只有一份报告需要被我们使用 。 但在此之前的工作都需要这些不同版本的报告,于是每次都是复制粘贴副本,产出的文件就越来越 多,文件多不是问题,问题是:随着版本数量的不断增多,你还记得这些版本各自都是修改了什么 吗? 文档如此,我们写的项目代码,也是存在这个问题的!!
版本控制器
为了能够更方便我们管理这些不同版本的文件,便有了版本控制器。所谓的版本控制器,就是能让你了解到一个文件的历史,以及它的发展过程的系统。通俗的讲就是一个可以记录工程的每一次改动和 版本迭代的一个管理系统,同时也方便多人协同作业。 目前最主流的版本控制器就是 Git 。Git 可以控制电脑上所有格式的文件,例如 doc、excel、dwg、 dgn、rvt等等。对于我们开发人员来说,Git 最重要的就是可以帮助我们管理软件开发项目中的源代码文件!
仓库本质就是一个文件夹
本地仓库
新需求:每个用户要建立不同的仓库远端仓库
git既是一个client也是一个server
每个 Git 仓库既可以作为客户端 (从其他仓库
pull/fetch代码),也可以作为服务器 (通过push将本地提交推送到其他仓库,或通过daemon、SSH 等方式对外提供服务)。没有严格的中央仓库概念,任何节点都可以相互拉取和推送,这也是 Git 与 SVN 等集中式版本控制系统的核心区别。
git是一个底层的版本控制系统软件
"底层" 体现在:Git 的核心设计基于对象存储 (blob、tree、commit、tag),并提供了一系列"管道"(plumbing)命令(如
git hash-object、git cat-file)供高级用户和脚本直接操作仓库内部结构。相对地 ,日常使用的
git add、git commit等被称为"瓷器"(porcelain)命令,是对底层命令的封装。所以,更准确的说法是:Git 是一个基于内容寻址文件系统的、底层的版本控制软件。它为上层工具(如 GitHub、GitLab)和开发者提供了强大的数据完整性与分布式协作能力。
gitee||GitHub是基于git的网站或者平台
去中心化,分布式的版本控制
去中心化:没有唯一的中央服务器,每个开发者的本地仓库都包含完整的版本历史,任何一个副本都可以作为新的"中心"。
分布式 :所有仓库地位对等,可以在彼此之间拉取(
pull)和推送(push)提交,而不必依赖单一权威节点。这种设计带来了极高的容错性、离线工作能力和协作灵活性,与传统的集中式版本控制系统(如 Subversion)形成鲜明对比。
Git 通过分布式模型、分支与合并、远程仓库等机制,为团队协作提供了高效的基础。
2.Git的历史
git是开源的
同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。
Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用一个专有的分布式版本 控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标:
• 速度
• 简单的设计
• 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
• 完全分布式
• 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。

3.安装git
yum install git
[user1@iZ5waahoxw3q2bZ processbar]$ sudo yum install git
[sudo] password for user1:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cloud.aliyuncs.com
* extras: mirrors.cloud.aliyuncs.com
* updates: mirrors.cloud.aliyuncs.com
base | 3.6 kB 00:00:00
epel | 4.3 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
Package git-1.8.3.1-25.el7_9.x86_64 already installed and latest version
Nothing to do
我这里是因为已经安装了,
查看版本
git --version
[user1@iZ5waahoxw3q2bZ processbar]$ git --version
git version 1.8.3.1
4.操作
我们这里使用gitee做演示
新建仓库


点击克隆/下载

点击复制

git clone+复制的
[user1@iZ5waahoxw3q2bZ ~]$ git clone xxx
remote: Enumerating objects: 689, done.
remote: Total 689 (delta 0), reused 0 (delta 0), pack-reused 689 (from 1)
Receiving objects: 100% (689/689), 3.23 MiB | 1.19 MiB/s, done.
Resolving deltas: 100% (249/249), done.

[user1@iZ5waahoxw3q2bZ linux-learning]$ ls -al
total 20
drwxrwxr-x 5 user1 user1 4096 Apr 16 14:43 .
drwx------ 4 user1 user1 4096 Apr 16 14:43 ..
drwxrwxr-x 8 user1 user1 4096 Apr 16 14:42 .git
drwxrwxr-x 4 user1 user1 4096 Apr 15 22:15 linux
drwxrwxr-x 39 user1 user1 4096 Apr 16 14:42 xuexi
我们将.git称为隐藏的本地仓库
5.git三板斧
先git config
git config --global user.email "xxxx@qq.com"
git config --global user.name "nianheng666"
1.git add

2.git commit

3.git push

附加
1.查看日志 git log

2.查看状态git status
git版本管理,只进行管理源文件
.gitignore:需要忽略的特定后缀的文件列表
远端仓库,相比较于任何人,都是最新的
为什么要冲突?提醒本地用户,你要和远端仓库进行同步了!
git pull 解决冲突
今天我们的学习就到此为止,期待我们下次再见!!!