【Git】Liunx环境下Git的使用:“克隆,提交,推送“

 e1c7f8cdf80947678346a25f8e64e89a.png

 

目录

一、常用参数

二、我们为什么要使用Git?

三、创建远程仓库

第一步:创建对应代码托管平台账号。

第二步:在托管平台创建仓库

第三步:完善仓库内容(选择性使用)

开源和私有

四、克隆远程仓库到本地

安装git:

Git全局配置:

克隆仓库到本地:

五、远程仓库的维护(四步走)

git add

git commit

git push

过程分析:

整体流程总结

逻辑顺序


 

e1c7f8cdf80947678346a25f8e64e89a.png

一、常用参数

add

将文件内容添加到索引

init

创建一个空的Git存储库或重新初始化一个现有的存储库

rm

从工作树和索引中删除文件

clone

将存储库克隆到新目录中

commit

记录对存储库的更改

pull

从另一个存储库或本地分支获取并与之合并

push

更新远程引用以及关联的对象

status

显示工作树状态

88f6de99383449aab349ef6b52440e2a.png

二、我们为什么要使用Git?

Git由Linus Torvalds于2005年开发,最初是为了管理Linux内核的源代码。当时,Linus对当时的版本控制系统(如BitKeeper)的限制和许可协议不满意,因此决定自己开发一个新的系统。Git的设计理念是快、高效、可靠,同时能够支持分布式开发。

我们可以理解这样一个场景,你使用文本编辑器写了一份工作汇报给老板,由于是第一次写报告,所以老板给你指出了很多问题让你去修改,然后你就大改特改在原文件中操作了很多,再拿给老板看的时候仍然有许多问题,在听取老板意见后又如此反复几次,但是,直到有一次老板给你说"你这改的什么玩意,越改越不行,就要你第二版吧",然后这时你就傻眼了,因为你一直在原稿改的,前几版早就不知道去哪了,你也早忘了刚开始具体是什么内容了,这时候就会非常犯难,但是如果在每次修改之前你都备份原版并更改标注日期和版本号,到时候回退的时候就会十分方便,这就是简单的版本管理。例如程序的发型新版本出现了非常严重的Bug,如果不能短时间内修好就可以先进行回退到之前版本,调整好之后再重新上线。

如果你有修改代码之前先备份成一个压缩包的习惯,这就是简单的备份,但是个人操作十分不便,在公司中需要管理的文件会变得十分庞杂,这就需要Git来帮我们完成这些任务:版本回退、备份恢复、分支管理(不同的方案)、协作、记录历史操作,这些都是Git可以为我们提供的服务。

此外我们还面临着一个问题,我们如果把各类文件的各种版本都保存在自己电脑上首先是内存不够,而且玩意某一年某一天电脑坏了要重装系统,数据丢失又是一个问题,这是Git结合"云存储"就可以解决这一问题,代码托管平台例如我们所熟知的GitHub,Gitee等,他们允许将所有版本存储在他们提供的存储器中,然后当你需要的时候可以随时随地拉取下来,为多人协作提供了方便,即便你们身处不同地方也可以共同完善同一个工程。以上就是我们使用Git的原因。

e1c7f8cdf80947678346a25f8e64e89a.png

三、创建远程仓库

使用远程代码仓库

第一步:创建对应代码托管平台账号。

(这里以Gitee为例,因为Github需要涉及到网络加速相对门槛较高)Gitee - 基于 Git 的代码托管和研发协作平台

第二步:在托管平台创建仓库

找到右上角的加号,点开后选择"新建仓库"

f99677ce61794a93a2850c84d35ec7f2.png

第三步:完善仓库内容(选择性使用)

9f6393d1fa0d450faec986f86c82d2a5.png

仓库介绍可用于标注该仓库作用,作者等信息,

开源和私有

开源选项可以选择开源也可以选择私有,开源则意味着任何人都可以访问、查看和使用这些代码。在大多数情况下,开源仓库允许用户下载代码、提交修改(通常通过合并请求或拉取请求)、报告问题等。这样有利于项目的进步,可以更好地发现、解决一些问题,缺点就是损失了隐私性,私有仓库只允许特定的人员或者组织查看修改,相对来说私密性较高。

d3bfa2619485442691dbf02b2b839bee.png

这里我选择把仓库名称命名为“test_for_linuxgit”,各位可以根据需要自己命名,也可以是中文名,例如"代码练习"等。

e1c7f8cdf80947678346a25f8e64e89a.png

四、克隆远程仓库到本地

我们之前只是在托管平台创建了仓库,现在我们本地也需要一份同样的仓库,而且要让版本控制工具意识到这两个仓库是同一个,我们怎么做呢?就是直接克隆过来一个一模一样的就可以了!

安装git:

如果是初次使用git,那么你可能需要进行安装,安装有如下几种:

如果你是Ubuntu:

sudo apt update sudo apt install git

如果你是CentOS:

sudo yum install git

其他发行版本在网站有对应教程,这里不过多赘述。

Git全局配置:

完成安装后进行git全局配置:

8e202f52c227439095724563a7657225.png

具体操作如下:

分别在引号中替换成你的用户名和邮箱.

git config --global user.name "用户名"git config --global user.email "123456email@xxx.com"

克隆仓库到本地:

然后进行克隆操作,第一种方法,打开刚才创建好的仓库,找到,选中HTTP,点击右侧的复制按钮复制该地址,

cf218681773543fb8815163377b0c0c5.png

然后在Linux中你想克隆该仓库的路径下使用以下指令,不要直接复制粘贴,先输入git clone ,clone就是"克隆"的英文,然后再在后面粘贴你刚才复制的HTTP地址,回车后你就可以输入“ll”观察到在该路径下创建了一个新的和你仓库同名的路径(这里由绿色框框标注出来)。

git clone https://gitee,com/userid/hubname.git

6347636e05014b31862238b7c4fce676.png

如果你在刚创建仓库的时候没有任何其他内容的勾选,进入到该路径后你可以看到是空空的,如果勾选了的话你会看到你勾选的文件,

9b54095de2d54f988425fcf33e240989.png

到此为止仓库的克隆操作就结束了。

e1c7f8cdf80947678346a25f8e64e89a.png

五、远程仓库的维护(四步走)

问:把代码放进代码仓库,拢共分几步?

答:3步!add、commit、push。

创建一个README.md文件,如果你已经有了也不要紧,先继续往下走,

touch README.md

7f59e9db34004afa91da37c82b22512f.png

如果你已经有了README.md,可以选择继续新一个test.txt文件,也可以选择使用Vim等编辑器打开README.md文件,在第一行新加一行信息用于观察后续的实验结果。

例如:

### 测试标题

git add

然后使用git add!!!注意add后面有一个点,不要丢失!!!

git add .

c11a617533d44a69b0318e81601c6d71.png

然后

git commit

git commit master -m "The first commit test"

会出现以下信息则说明成功了,引号里的内容一般为本次修改内容,最好不要乱写,例如111,123,等随便一对内容都是不好的,正确的描述每次更改的内容会使得以后再回顾内容或者查找问题变得容易,也使得项目结构更加清晰,时间线更明显。

5992532042154ac2a0e5c5c9c6cdf5f0.png

git push

推送,如果直接使用推送命令

git push .

会有一个报错,这个错误信息是 Git 在你尝试推送(push)当前分支时产生的,表示当前的 master 分支没有设置上游分支(upstream branch)。下面是对这个信息的解释和解决方法:

在 Git 中,上游分支是指远程仓库中与本地分支对应的分支。没有设置上游分支意味着 Git 不知道要将当前分支推送到远程的哪个分支。

使用一下命令可以解决报错:

git push --set-upstream origin master

git push . 和 git push 是两个不同的命令,它们在推送操作中有一些关键差异:

git push

  • 含义:git push 命令用于将当前分支的提交推送到与之关联的上游(upstream)分支,通常是远程仓库(例如 GitHub、GitLab 等)。
  • 用法:它依赖于配置的上游分支。如果当前分支有设置的上游分支,git push 将推送更改到那个分支。否则,你可能会看到类似“当前分支没有上游分支”的错误消息。
  • 示例:如果本地 master 分支设置了与远程仓库 origin/master 的关联,执行 git push 将把本地 master 分支的提交推送到远程的 master 分支。

git push .

  • 含义:git push . 命令中的点号 . 表示当前目录,也就是说,它会尝试将当前本地仓库的更改推送到指定的远程分支。
  • 用法:尽管执行这个命令试图推送更改,但它与 git push 的行为略有不同。git push . 会推送当前目录中的更改,但仍然需要知道目标(远程)分支在哪里。如果没有上游分支配置,通常会导致错误,告知用户不能推送。
  • 示例:执行 git push . 时,Git 会尝试将更改推送到与当前分支相对应的远程分支,但必须指定如何推送,即上游分支。

 

所以一般推送使用push后不加点。直接git push即可。

然后输入用户名密码来验证身份,注意输入密码时还是不会显示的,输入完成后直接回车就行。

14c46fc301ed488f9961d65e29ec14a4.png

 再回到托管平台打开仓库你就可以观察到提交记录和新增文件,

2a2457845794427ba1603817900e2859.png

 

如果你是加了新内容则可以看到以下现象:

6357bba036ef47b3b1a44f1b541667b2.png


过程分析:

在 Git 中,git commit、git add 和 git push 等命令用来管理代码的版本和与远程仓库的交互。它们各自的作用和逻辑顺序如下:

1. git add

  • 作用:将更改(文件的修改、添加或删除)添加到暂存区(staging area)。
  • 逻辑:当你对文件进行修改后,Git 不会自动把这些更改包含在下一个提交中。你需要使用 git add 命令明确指定哪些更改要包含。此命令只会对文件进行标记,并不会真正做持久性保存,也不会与版本历史记录联系。

2. git commit

  • 作用:将暂存区中的更改创建一个新的提交,保存到本地的版本历史中。
  • 逻辑:执行 git commit 时,Git 会把上一步中通过 git add 放入暂存区的所有更改记录成一个快照,并为这个快照生成一个唯一的哈希值。可以使用 -m 后跟消息为这个提交添加描述

3. git push

  • 作用:将本地版本历史(即你的本地所有提交)上传到远程仓库。
  • 逻辑:执行 git push 时,Git 会将你所有在本地 commit 的更改推送到与当前分支关联的远程分支。你可能需要先设置上游分支,否则 Git 不知道将更改推送到哪个远程分支。

整体流程总结

  1. 开发阶段你在代码中进行了更改(例如,修改了文件)。
  2. 暂存阶段使用 git add 将这些更改放入暂存区,准备好提交。这是将更改从工作目录复制到暂存区的过程。
  3. 提交阶段使用 git commit 来将暂存区的内容记录为一次新的提交,也就是将你的更改持久化到本地的版本历史。此时,所有修改和描述将记录在本地仓库中。
  4. 推送阶段使用 git push 将本地的提交推送到远程仓库,使得其他人能够看到和使用你所做的更改。

逻辑顺序

  1. 修改(工作目录)
  2. git add(暂存区)
  3. git commit -m "message"(本地仓库,成为一条提交记录)
  4. git push(远程仓库,分享你的更改)

这样一来,git add、git commit 和 git push 就是将代码更改从本地保存到远程的整个流程中的关键步骤。

8908cebdf7b8409ca6dfba7946447266.png感谢观看,如果内容对你有帮助的话欢迎点赞收藏,如果有问题或者意见欢迎到评论区讨论,后续会更新免密提交方法,以及pull的使用,可以点个关注不会迷路,谢谢。

 

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

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

相关文章

entos7离线安装xrdp和图形化桌面

1、查看Linux系统环境 cat /etc/os-release NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI_COLOR"0;31" CPE_NAME…

Qt学习笔记(三)网络编程

系列文章目录 Qt开发笔记(一)Qt的基础知识及环境编译(泰山派) Qt学习笔记(二)Qt 信号与槽 Qt学习笔记(三)网络编程 文章目录 系列文章目录前言一、Qt网络模块二、TCP网络的编写2.1 …

uni-app发起请求以及请求封装,上传及下载功能(六)

文章目录 一、发起网络请求1.使用及封装2. https 请求配置自签名证书3.拦截器 二、上传下载1.上传 uni.uploadFile(OBJECT)2. 下载 uni.downloadFile(OBJECT) 一、发起网络请求 uni-app中内置的uni.request()已经很强大了,简单且好用。为了让其更好用,同…

快速理解软件开源协议,以及如何选择协议

一、开源协议介绍 开源协议,是一个用来对软件二次分发进行限制和规范的条文规定,用户在使用他人开源代码的时候,可以根据作者选取的LICENSE获知自己能够有哪些权利去处理从原作者哪里拿到的代码。开源协议是开源社区运作的基石,在…

【读书笔记/深入理解K8S】集群网络

前言 上一章讲了集群控制器的一个大概的原理,这一章讲一下集群网络。网络是集群通信的载体,因为该书是阿里云团队出品的,所以也以阿里云的集群网络方案为例,其他云厂商的网络集群方案一般来说也大同小异。所以通过本章的学习&…

【计算机网络】章节 知识点总结

一、计算机网络概述 1. 计算机网络向用户提供的两个最重要的功能:连通性、共享 2. 因特网发展的三个阶段: 第一阶段:从单个网络 ARPANET 向互联网发展的过程。1983 年 TCP/IP 协议成为 ARPANET 上的标准协议。第二阶段:建成三级…

一站式教育网校系统源码开发方案:知识付费小程序搭建详解

本文将从开发的技术要点、功能模块设计、性能优化等角度,详解一站式教育网校系统源码的开发方案,并着重讲解知识付费小程序的搭建方法。 一、教育网校系统源码开发的核心需求 要搭建一套稳定、高效的教育网校系统,首先需要明确其核心需求。一…

Java学习Day57:碧水金睛兽!(Spring Cloud微服务1.0)

1.微服务入门 (1).单体架构与分布式架构 单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包部署优点: 架构简单、部署成本低 ; 缺点: 耦合度高项目打包部署到Tomcat,用户直接访问。用户量增加后…

AI直播带货场景切换模块的搭建!

AI直播带货,作为电商领域的新宠,正以其独特的魅力和高效的营销手段,引领着销售模式的新变革。 在AI直播带货中,场景切换模块是不可或缺的一部分,它不仅能够提升观众的观看体验,还能更好地展示商品&#xf…

华为HCIP —— QinQ技术实验配置

一、QinQ的概述 1.1QinQ的概念 QinQ(802.1Q in 802.1Q)技术是一项扩展VLAN空间的技术,通过在原有的802.1Q报文基础上再增加一层802.1Q的Tag来实现。 1.2QinQ封装结构 QinQ封装报文是在无标签的以太网数据帧的源MAC地址字段后面加上两个VL…

Linux grep命令详解(多图、多示例)

文章目录 grep基本说明grep参数简单示例列举参数-v(反选)-r -l -H -i(目录子目录、只打印匹配文件、输出文件名、忽略大小写)-c -n -o(匹配次数、输出行号、只打印匹配)-A -B -C(前后行) 正则表达式基本正则表达式与扩展正则表达式 grep示例附录:正则表达式基本字符特殊字符Per…

Hadoop---MapReduce(3)

MapTask工作机制 (1)Read阶段:MapTask通过InputFormat获得的RecordReader,从输入InputSplit中解析出一个个key/value。 (2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理&…

UI界面设计入门:打造卓越用户体验

互联网的迅猛发展催生了众多相关职业,其中UI界面设计师成为互联网行业的关键角色之一。UI界面设计无处不在,影响着网站、应用程序以及其他数字平台上的按钮、菜单布局、色彩搭配和字体排版等。UI设计不仅仅是字体、色彩和导航栏的组合,它的意…

jmeter基础01-3_环境准备-Linux系统安装jdk

Step1. 查看系统类型 打开终端,命令行输入uname -a,显示所有系统信息,包括内核名称、主机名、内核版本等。 如果输出是x86_64,则系统为64位。如果输出是i686 或i386,则系统为32位。 Step2. 官网下载安装包 https://www…

2024年海淀区中小学生信息学竞赛校级预选赛试题与解析(第二部分程序阅读题(1-4))

第一题代码&#xff1a; #include<bits/stdc.h> using namespace std; int n, cnt;int main() {cin >> n; // 读取输入的整数 nfor (int i 1; i < n; i) // 从 1 到 n-1 的整数进行遍历if (n % i 0) // 如果 i 是 n 的约数cnt; …

ELK日志

一&#xff0c;Elastic Stack 在企业的常用架构 1&#xff0c;没有日志收集系统运维工作的日常"痛点"概述 如上图所示&#xff0c;简单画了一下互联网常用的一些技术栈相关架构图&#xff0c;请问如果让你对上图中的各组件日志进行收集&#xff0c;分析&#xff0c;存…

SAP RFC 用户安全授权

一、SAP 通讯用户 对于RFC接口的用户&#xff0c;使用五种用户类型之一的“通讯”类型&#xff0c;这种类型的用户没有登陆SAPGUI的权限。 二、对调用的RFC授权 在通讯用户内部&#xff0c;权限对象&#xff1a;S_RFC中&#xff0c;限制进一步可以调用的RFC函数授权&#xff…

文件操作:Xml转Excel

1 添加依赖 Spire.Xls.jar <dependency><groupId>e-iceblue</groupId><artifactId>spire.xls</artifactId><version>5.3.3</version></dependency>2 代码使用 package cctd.controller;import com.spire.xls.FileFormat; im…

【FL0014】基于SpringBoot和微信小程序的个人健康管理系统

&#x1f9d1;‍&#x1f4bb;博主介绍&#x1f9d1;‍&#x1f4bb; 全网粉丝10W,CSDN全栈领域优质创作者&#xff0c;博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战&#xff0c;以及程序定制化开发…

数据库_SQLite3

下载 1、更新软件源&#xff1a; sudo apt-get update 2、下载SQLite3&#xff1a; sudo apt-get install sqlite3 3、验证&#xff1a; sqlite3启动数据库&#xff0c;出现以下界面代表运行正常。输入 .exit 可以退出数据库 4、安装sqlite3的库 sudo apt-get install l…