关于命令行下的 git( git add、git commit、git push)

news2025/2/28 23:50:23

文章目录

  • 关于 git
    • git 的概念
    • git 操作(git add、git commit、git push 三板斧)
      • 安装 git
      • 新建仓库及配置
      • git clone
      • .gitignore
      • git add
      • git commit
      • git push
      • 其他 git 指令
      • git pull(把远端的东西拉到本地进行同步)
      • 其他指令

关于 git

git 的概念

Git 是一个分布式版本控制系统,由 Linus Torvalds 于 2005 年创建,主要用于管理软件开发中的代码变更。它允许多个开发者协同工作,记录每次代码修改,并支持回滚到任意历史版本。

仓库(Repository): 存储项目文件及其历史记录的地方,分为本地仓库(开发者本地机器上)和远程仓库(GitHub、GitLab、Gitee等)。
工作区(Working Directory): 用户当前操作的文件目录。
暂存区(Staging Area): 临时保存即将提交的更改。
提交(Commit): 将暂存区的更改永久保存到仓库,每次提交生成一个唯一的 SHA-1 哈希值。
分支(Branch): 从主线分离的独立开发线,默认分支为 master 或 main。
合并(Merge): 将一个分支的更改整合到另一个分支。
克隆(Clone): 从远程仓库复制整个项目到本地。
拉取(Pull): 从远程仓库获取最新更改并合并到本地分支。
推送(Push): 将本地更改上传到远程仓库。

git 操作(git add、git commit、git push 三板斧)

安装 git

在我们在 Linux 下进行 git 的命令行操作时,得先安装一下 git 。
指令:sudo yum install -y git
当你首次使用新安装的 git 的时候,git 会提示你进行配置用户名和邮箱。按照提示配置即可。
在这里插入图片描述

新建仓库及配置

我们可以在 gitee 上新建一个仓库(在我们注册登录 gitee 账号之后右上角的 ‘+“ 符号新建仓库)
仓库名字我们要根据自己的需求命名规范,方便自己或者他人的查看。
接下来再设置初始化仓库设置模板选择分支模型等,如下:
在这里插入图片描述
初始化仓库:
1)选择语言,选择自己所使用的语言即可,比如小编选择的 C++
2)添加 .gitignore,也选择自己所使用的语言即可,这个东西是干什么的我们下面详细说。
3)开源许可证我们随便选一个都可以。
设置模板:
1)建议选择 Readme 文件;Readme 相当于你的代码的说明文档。
分支模型:
1)这些分支模型都是和开发有关的,目前我们使用默认就可以。以后我们做开发的时候可能就会使用多分支。

做了以上设置之后,我们点击创建即可,创建之后,此时在我们对应的远端就形成了一个仓库。接下来我们就可以在我们的 Linux 下做代码提交了。怎么做呢?

git clone

我们形成仓库之后,我们想要在 Linux 下做代码提交,首先我们要先找到仓库的链接,如下图:
在这里插入图片描述
找到仓库链接之后,复制该链接:
在这里插入图片描述
小贴士:实际上我们提交代码的时候有很多种不同的提交方式:HTTPS、SSH、SVN等等,但是新手我们建议使用 HTTPS 的,而 SSH 等熟悉之后再用(因为比较麻烦,需要在本地形成对应私钥、公钥,然后在你的配置当中仓库里添加密钥信息的等等)

做完以上工作之后,我们就可以在 Linux 下把我们的远端的仓库拉取下来
指令:git clone 仓库链接
此时可能要用户输入你的 gitee 账号的密码。
做完以上工作以后,在当前目录就会形成我们的仓库了:
在这里插入图片描述
此时进入这个仓库目录,ls/ll 就能看到我们在 gitee 上看到的文件。

.gitignore

当我们 ls -al 仓库目录时,我们就能看见 .gitignore 这个文件:
在这里插入图片描述
这个文件是干什么的呢?我们 vim 进入这个文件,我们可以看到很多文件的后缀:
在这里插入图片描述
首先我们要知道,git 上传文件的只需要传源代码( .h/.c/.cpp )就可以了,其他临时文件不需要传上去,而 .gitignore 文件就可以保证,凡是在这个文件中存在的文件后缀所对应的文件,正常 git 操作的时候,不会被上传到远端的仓库下。
小贴士:如果我们不想让带有某些后缀的文件上传到我们的远端仓库上,我们也可以在 .gitignore 文件中添加上这种后缀。

另外,当我们 ls -al 仓库目录时,除了 .gitignore 之外,还有一个 .git ,这个就是我们的本地仓库。所谓的 git 仓库,本质上就是一个目录,名字叫 .git ;再加上里面的内容。而我们后面学的 push 到远端仓库,本质上就是将你的 .git 里面的内容同步到远端仓库上。而远端仓库上实际上也有一个和 .git 一模一样的文件夹,只不过是我们看不到而已。

git add

当我们把代码文件放到仓库中, git add 文件名, 就可以将需要用 git 管理的文件告知 git 。我们来测试一下,下面我们在仓库中创建一个 process 目录,里面放置我们的代码文件 test.c
在这里插入图片描述
下面执行命令:git add . 这个命令的意思是将我们新增的文件,把它添加到本地仓库。(将新增的文件进行二进制转码 添加到 .git 中)

git commit

指令:git commit -m ‘日志信息’
git commit 是提交,-m 后面必须写上我们的提交日志,这个日志不能没有,没有的话就会报错。另外,日志不能乱写,因为日志记录自己做了什么事情,什么修改,方便团队协作别人和自己的查看。而这个提交并不是提交到远端,而是把新增的文件提交到本地仓库,add 只是添加到仓库(添加到临时区域),commit 就是合并到本地仓库,也就是本地有这个代码了,而远端没有。
在这里插入图片描述

git push

git commit 之后,我们的本地仓库已经有我们的代码文件了,而此时我们想要同步到远端时,就可以用 git push 了。
git push :把本地内容提交到远端。
在这里插入图片描述
git push 完成之后,此时我们刷新一下我们的 gitee 仓库,此时我们就能看到我们刚刚新建的目录 process 以及里面的代码文件了。而 commit 提交的日志信息也显示在上面了。
如果途中出现下面的情况:
在这里插入图片描述
我们按照提示输入操作即可:
在这里插入图片描述
当然,git push 的时候,如果你不想频繁输入账号密码,也能配置免密码上传:
配置免密码

其他 git 指令

1)git log 查看提交日志信息。
在这里插入图片描述
2)git status 查看当前的状态(记录一些变化,比如新增文件,修改了文件等等)。
在这里插入图片描述
在这里插入图片描述

git pull(把远端的东西拉到本地进行同步)

我们上传到远端仓库的代码是可以在远端编辑修改的,假如我们在远端修改了自己从 Linux 上传到远端的代码并提交了,此时我们假如不知道远端做了修改,我在linux 下新建了一个文件,然后再进行 git 三板斧(add,commit,push)提交到远端,也就是说我在远端把代码改了,在本地仓库我也做了修改,这时候我们提交到远端的时候,系统就会告诉我们冲突了。此时我们就可以用 git pull了。

git pull 把远端的代码先拉取到本地进行同步,同步的时候会进行合并,我们默认就可以,这时候再进行 git push,这时候就能识别提交到远端,不会冲突了。这时候我们在远端刷新仓库,也就能看到新增的文件了。并且在本地也能看到在远端做了修改的代码。

这个场景就像在工作中我们有几个人共用一个仓库,你的小组成员在远端对代码做了修改,你在本地也做了修改,而这时你上传代码的时候发现冲突了上传不了,这时候就可以用 git pull。这个冲突的本质也是强制我们每一个人必须随时随地地和远端仓库保持一致,不一致就 pull 一下同步。

其他指令

如果我们想对仓库里面的文件重命名,用 git mv
如果我们想删除仓库里面的文件,用 git rm,再 git commit git push 提交即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2307616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DaoCloud 亮相 2025 GDC丨开源赋能 AI 更多可能

2025 年 2 月 21 日至 23 日,上海徐汇西岸,2025 全球开发者先锋大会以 “模塑全球,无限可能” 的主题,围绕云计算、机器人、元宇宙等多元领域,探讨前沿技术创新、应用场景拓展和产业生态赋能,各类专业论坛、…

极速探索 HarmonyOS NEXT:开启国产操作系统开发的新篇章

极速探索 HarmonyOS NEXT:开启国产操作系统开发的新篇章 一、引言二、HarmonyOS NEXT 是什么?背景核心特性 三、HarmonyOS NEXT 的发展历程从 LiteOS 到 HarmonyOS 的逐步演进HarmonyOS NEXT 5.0 的发布 四、HarmonyOS NEXT 对科技的影响技术突破开发者生…

火狐浏览器多开指南:独立窗口独立IP教程

无论是跨境电商从业者需要管理多个店铺账号,还是海外社交媒体营销人员要运营多个社交平台账号,亦或是从事多账号广告投放的人员,都面临着一个共同的挑战 —— 如何高效管理多个账号,并确保每个账号的独立性。 在这种情况下&#…

内容中台是什么?内容管理平台解析

内容中台的核心价值 现代企业数字化转型进程中,内容中台作为中枢系统,通过构建统一化的内容管理平台实现数据资产的高效整合与智能调度。其核心价值体现在打破传统信息孤岛,将分散于CRM、ERP等系统的文档、知识库、产品资料进行标准化归集&a…

1.2 Kaggle大白话:Eedi竞赛Transformer框架解决方案02-GPT_4o生成训练集缺失数据

目录 0. 本栏目竞赛汇总表1. 本文主旨2. AI工程架构3. 数据预处理模块3.1 配置数据路径和处理参数3.2 配置API参数3.3 配置输出路径 4. AI并行处理模块4.1 定义LLM客户端类4.2 定义数据处理函数4.3 定义JSON保存函数4.4 定义数据分片函数4.5 定义分片处理函数4.5 定义文件名排序…

sql server笔记

创建数据库 use master gocreate database stuuuuu//删除数据库if db_id ($$$) is not nullDrop database [$$$] go//新建表USE [studyTest] GOSET ANSI_NULLS ON GOSET QUOTED_IDENTIFIER ON GOCREATE TABLE [dbo].[Table_1]([id] [int] NULL,[name] [varchar](10) NULL ) ON…

uni小程序wx.switchTab有时候跳转错误tab问题,解决办法

在一个子页面里面使用uni.switchTab或者wx.switchTab跳转到tab菜单的时候,先发送了一个请求,然后执行跳转到tab菜单,但是这个时候,出错了........也是非常的奇怪,不加请求就没问题......但是业务逻辑就是要先执行某个请…

【第十节】C++设计模式(结构型模式)-Flyweight( 享元)模式

目录 一、问题背景 二、模式选择 三、代码实现 四、总结讨论 一、问题背景 享元模式(Flyweight Pattern)在对象存储优化中的应用 在面向对象系统的设计与实现中,创建对象是最常见的操作之一。然而,如果一个应用程序使用了过多…

AORO M6北斗短报文终端:将“太空黑科技”转化为安全保障

在卫星导航领域,北斗系统作为我国自主研发的全球卫星导航系统,正以其独特的短报文通信功能引发全球范围内的广泛关注。这一突破性技术不仅使北斗系统在全球四大导航系统中独树一帜,具备了双向通信能力,更通过遨游通讯推出的AORO M…

深度生成模型(二)——基本概念与数学建模

上一篇笔记中提到了端到端模型底层核心采用了深度生成模型,先简单梳理一下 生成式人工智能(Artificial Intelligence Generated Content,AIGC)经历了从早期基于概率模型和规则系统的方法到现代深度生成模型的跨越式发展 深度神经…

Mac本地部署Deep Seek R1

Mac本地部署Deep Seek R1 1.安装本地部署大型语言模型的工具 ollama 官网:https://ollama.com/ 2.下载Deepseek R1模型 网址:https://ollama.com/library/deepseek-r1 根据电脑配置,选择模型。 我的电脑:Mac M3 24G内存。 这…

项目——仿RabbitMQ实现消息队列

1.项目介绍 曾经在学习Linux的过程中,我们学习过阻塞队列 (BlockingQueue) 。 当时我们说阻塞队列最大的用途, 就是用来实现生产者消费者模型。 生产者消费者模型是后端开发的常用编程方式, 它存在诸多好处: 解耦合支持并发支持忙闲不均削峰…

【nextjs官方demo】Chapter 6连接数据库报错

问题:跟着demo创建完成postgres数据库,并修改了env文件,需要访问/seed去初始化数据的时候: 报错信息如下,看信息就是bcrypt模块有问题: 排除了你的环境问题后,就看下面这句话: 它的…

Nginx的反向代理(超详细)

正向代理与反向代理概念 1.概念: 反向代理服务器位于用户与目标服务器之间,但对用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务…

Plantsimulation中机器人怎么通过阻塞角度设置旋转135°

创建一个这样的简单模型。 检查PickAndPlace的角度表。源位于180的角位置,而物料终结位于90的角位置。“返回默认位置”选项未被勾选。源每分钟生成一个零件。启动模拟时,Plant Simulation会选择两个位置之间的最短路径。示例中的机器人无法绕135的角位…

Docker数据卷容器实战

数据卷容器 数据共享 上面讲述的是主机和容器之间共享数据,那么如何实现容器和容器之间的共享数据呢?那就是创建 创建数据卷容器。 命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载…

【Rust中级教程】2.13. 结语(杂谈):我学习Rust的心路历程

2.13.1. 【Rust自学】专栏的缘起 笔者我在去年12月份之前对Rust还一无所知,后来看到JetBrains推出了Rust Rover,想着自己毕竟是买的全产品证书就下载下来玩了一下。原本就是看看,都打算卸载了,后来去网上查才发现Rust这门语言挺牛…

【备赛】点亮LED

LED部分的原理图 led前面有锁存器,这是为了防止led会受到lcd的干扰(lcd也需要用到这些引脚)。 每次想要对led操作,就需要先打开锁存器,再执行操作,最后关闭锁存器。 这里需要注意的是,引脚配置…

cpp中的继承

一、继承概念 在cpp中,封装、继承、多态是面向对象的三大特性。这里的继承就是允许已经存在的类(也就是基类)的基础上创建新类(派生类或者子类),从而实现代码的复用。 如上图所示,Person是基类&…

[Java基础] JVM常量池介绍(BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗)

文章目录 1. JVM内存模型2. 常量池中有什么类型?3. 常量池中真正存储的内容是什么4. 判断一个字符串(引用)是否在常量池中5. BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗?6. 获取堆内存使用情况、非堆内存使用情况 1. JVM内…