【Linux】版本控制器Git

目录

  • [一、git 简史](#一、git 简史)
  • 二、版本控制器
  • [三、Git 的命令行操作](#三、Git 的命令行操作)
    • [3.1 安装 git](#3.1 安装 git)
    • [3.2 在 gitee 上创建项目](#3.2 在 gitee 上创建项目)
      • [3.2.1 注册gitee](#3.2.1 注册gitee)
      • [3.2.2 创建仓库](#3.2.2 创建仓库)
      • [3.2.3 克隆仓库](#3.2.3 克隆仓库)
    • [3.3 提交文件](#3.3 提交文件)
      • [3.3.1 git status](#3.3.1 git status)
      • [3.3.2 git add](#3.3.2 git add)
      • [3.3.3 git commit](#3.3.3 git commit)
      • [3.3.4 git push](#3.3.4 git push)
      • [3.3.5 git log](#3.3.5 git log)
      • [3.3.6 git pull](#3.3.6 git pull)
      • [3.3.7 .gitignore](#3.3.7 .gitignore)
    • [3.4 git配置免密码提交操作](#3.4 git配置免密码提交操作)

个人主页:矢望

个人专栏:C++LinuxC语言数据结构

一、git 简史

同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。

Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991−2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。

到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力,主要是 BitKeeper 商业公司免费提供给 Linux 内核开源社区使用,但社区里的大神尝试破解被发现了。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 LinusTorvalds)基于使用 BitKeeper 时的经验教训,开发出了自己的版本系统,也就是 Git,一经开发就马上开源了。

自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统,自此 Git 几乎一统江湖。

二、版本控制器

为了能够更方便我们管理这些不同版本的文件,便有了版本控制器。所谓的版本控制器,就是能让你了解到一个文件的历史,以及它的发展过程的系统。通俗的讲就是一个可以记录工程的每一次改动和版本迭代的一个管理系统,同时也方便多人协同作业。

目前最主流的版本控制器就是 GitGit 可以控制电脑上所有格式的文件,例如 doc、excel、dwg、dgn、rvt等等。对于开发人员来说,Git 最重要的就是可以帮助我们管理软件开发项目中的源代码文件。

Git 进行版本控制的时候,是通过记录"变化",来进行版本控制的。Git是一个版本控制器的软件,其中日常最常听到的GitHubGitee 是基于Git的网站,国外的网站叫做前者,国内叫做后者。

Git是一个去中心化的版本控制器,但以中心化为主。

三、Git 的命令行操作

3.1 安装 git

安装指令

cpp 复制代码
sudo yum install -y git
sudo apt install -y git

判断是否安装完成:git --version

出现版本号则证明已安装。

3.2 在 gitee 上创建项目

3.2.1 注册gitee

链接:gitee 官网,点击即可注册登录。

3.2.2 创建仓库

注册完成登录后,在你的右上角有一个加号,这里可以新建仓库。

创建完成后,会呈现出以下页面,其中有一个叫.gitignore的文件,在git上传时,只要是文件后缀出现在.gitignore中的都不会进行上传。

3.2.3 克隆仓库

当你第一次在Linux上进行提交时,你首先需要确保你的身份被Gitee识别,此时就需要执行下面的两条命令:

首先执行的两条命令:

将远程的仓库克隆到本地:

区分一个目录是工作区还是普通目录就看目录里面有没有.git,所以这个隐藏文件不能乱删。


.git中有一个objects,里面存储的这就是仓库存储的一次次的修改记录。

3.3 提交文件

现在创建一份文件。

3.3.1 git status

git status 是一个 Git 命令,用于显示工作目录和暂存区的当前状态 。它可以告诉你:哪些文件被修改了,哪些文件已暂存(准备提交),哪些文件未被跟踪,当前所在的分支,与远程仓库的同步状态等。

上面图片显示我们的test.c文件是没有添加到本地仓库.git中的。

3.3.2 git add

git add 是一个 Git 命令,用于将工作目录中的更改添加到暂存区 ,可以使用git add [文件名],也可以git add .它是将所有的修改都添加到仓库中。

执行git add .后,再次查看:

此时显示我们的信文件已经添加到本地仓库了。

3.3.3 git commit

git commit 是一个 Git 命令,用于将此次的更改永久保存到本地仓库中。

cpp 复制代码
git commit -m "提交日志"

这里的提交日志记录的是你此次做了什么更改,一定不能乱写,提交日志是写给未来的自己和团队成员看的,好的提交日志是专业开发者的基本素养

此时再次查看状态时,它说你的工作区已经干净了,但是现在你这次提交的文件还没有到远程仓库。

此时已经做完本地仓库的操作了。

3.3.4 git push

git push 是一个 Git 命令,用于将本地仓库的提交上传到远程仓库 。这是团队协作和代码共享的关键命令。

这样你的代码就从本地仓库推送到远端了。

远端仓库

3.3.5 git log

git log可以查看提交历史。

上图中标红的就是提交ID值,每次commit都不重复。

3.3.6 git pull

git pull 是一个 Git 命令,用于从远程仓库获取更新并合并到本地分支

现在Linux程序员和Windows程序员共同维护了一个仓库。此时Windows程序员创建并推送了hello.c文件。

远端仓库

此时我们的Linux程序员上线了,他完成了一天的代码任务,开始push

结果显示提交被拒绝了,这是因为本地仓库和远端仓库不一致,导致git push被拒绝,此时应该git pull拉取同步之后再git push

git pull之后此时我就看到了之前另一个程序员提交的代码hello.c,并且再次push就成功了。

此时的远端仓库

所以 git pull 是保持代码同步的核心命令,确保:获取团队的最新工作成果,避免推送冲突,维持代码库的一致性。本质是你想要提交你的代码,必须先要把别人历史提交的代码同步到本地。

3.3.7 .gitignore

假设我不想上传本地仓库以.txt为后缀的文件,我就可以添加到.gitignore中。

创建一个以txt为后缀的文件,再创建一个别的文件进行push测试。

远端仓库:

可以看到以txt为后缀的文件并没有上传到远端,而另一个文件上传了。所以.gitignore用于指定哪些文件或目录应该被 Git 忽略,不纳入版本控制。避免提交不必要的文件。

3.4 git配置免密码提交操作

在你的Linux家目录~下,创建文件.git-credentials,并使用vim编辑它。

具体操作流程:

1、进入家目录cd ~

2、创建文件touch .git-credentials

3、使用vim,编辑文件并在文件中输入:

cpp 复制代码
https://{username}:{password/你的私人令牌}@gitee.com

这里推荐使用你的私人令牌。

注意:上面输入的不用加大括号,假设你的gitee名是123,私人令牌是456,那么在~/.git-credentials这样输入

cpp 复制代码
https://123:456@gitee.com

在你的gitee官网仓库中的克隆下载页面就可以配置你的私人令牌了。

做完以上操作后在你的Linux终端输入:

cpp 复制代码
git config --global credential.helper store

此时打开~/.gitconfig文件,会发现多了一项:

cpp 复制代码
[credential]
helper = store

此时免密码提交就配置完成了。

总结:
以上就是本期博客分享的全部内容啦!如果觉得文章还不错的话可以三连支持一下,你的支持就是我前进最大的动力!
技术的探索永无止境! 道阻且长,行则将至!后续我会给大家带来更多优质博客内容,欢迎关注我的CSDN账号,我们一同成长!
(~ ̄▽ ̄)~

相关推荐
杨云龙UP1 小时前
【MySQL逻辑备份】基于mysqldump的MySQL 8.0全量逻辑备份脚本
linux·运维·数据库·sql·mysql·mssql
Z***25801 小时前
Git云原生
git·云原生
BS_Li1 小时前
【Linux系统编程】基础IO
linux·服务器·文件操作
百***35941 小时前
Linux(CentOS)安装 MySQL
linux·mysql·centos
h***83932 小时前
Git撤销commit操作的3种方法对比
git
万山y2 小时前
git remote add做了什么
大数据·git·elasticsearch
赖small强2 小时前
【Linux C/C++开发】第16章:多线程编程基础
linux·c语言·c++·多线程编程·进程和线程的本质区别
朕要睡了2 小时前
aws-sdk-cpp编译
linux·运维·服务器
刘国华-平价IT运维课堂2 小时前
红帽企业Linux 10.1发布:AI命令行助手、量子安全加密和混合云创新
linux·运维·服务器·人工智能·云计算