【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.mzph.cn/news/885448.shtml

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

相关文章

机器人零位、工作空间、坐标系及其变换,以UR5e机器人为例

机器人中的主要坐标系 在机器人中,常用的坐标系包括: 基坐标系(Base Frame):固定在机器人基座上的坐标系,用于描述机器人的整体位置和方向,是其他所有坐标系的参考点。 连杆坐标系&#xff08…

JavaSE:运算符 (学习笔记)

目录 一,算术运算符 【1】 共同点: 【2】 不同点: 二,关系运算符 三,逻辑运算符 2,&和&&的区别和联系 { |和||的区别和联系 }---两题类似 四,赋值运算符 五,拓展…

C++中类的默认成员函数

默认成员函数 1.构造函数2.析构函数3.拷贝构造函数4.赋值运算符重载4.1运算符重载4.2赋值运算符重载 #mermaid-svg-oipiwg9stvONvYK0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-oipiwg9stvONvYK0 .error-icon{f…

游戏引擎学习第一天

视频参考: https://www.bilibili.com/video/BV1zGDCYHErA/ 创建一个保存项目的路径 VS的安装略过,个人自行百度 1. vs 创建第一个CMAKE的窗口项目 game.cpp 修改如下的代码 到https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-winmain 去…

视频播放相关的杂记

基于QT FFMPEG设计一款 RTMP协议推流、视频录制软件 实现的功能: (1)将摄像头视频流 麦克风音频流合并,并推到流媒体服务器 (2)将摄像头视频流 麦克风音频流保存到本地磁盘 基于QtFFMPEG设计一款RTM…

2024年将尽,我们开始为ESG的未来感到担忧 | 深度

2024已经接近尾声了,今年ESG的发展状况非常两级分化。最极端者,有人觉得ESG要在2024年起飞的,毕竟今年三大交易所出台了《上市公司可持续发展报告指引》,“A股公司进入ESG信披新纪元”。而在另一个极端,有人认为ESG“将…

windows中docker安装redis和redisinsight记录

创建一个Redis运行容器,命令如下 docker run -it -d --name redis -p 6379:6379 redis --bind 0.0.0.0 --protected-mode no -d 代表Redis容器后台运行 --name redis 给创建好的容器起名叫redis -p 6379:6379 将容器的6379端口映射到宿主机的6379端口,注…

atcoder解题

#include <iostream> #include <vector>using namespace std;int main() {long long N, M;cin >> N >> M;vector<long long> X(M), A(M);long long totalStones 0;// 读入 X 和 Afor (int i 0; i < M; i) {cin >> X[i];}for (int i …

Vue:侦听属性

Vue&#xff1a;侦听属性 watch深度侦听异步任务 watch 在Vue中&#xff0c;允许用户在数据改变时&#xff0c;做出一定的处理。 语法&#xff1a; new Vue({watch:{属性名:{handler(newValue, oldValue){// 函数体} }} })当一个属性被写入watch中&#xff0c;每当这个属性…

《计算机原理与系统结构》学习系列——存储器(上)

系列文章目录 目录 存储器技术概要存储器层次cache&#xff0c;内存辅存存储器技术SRAM技术DRAM技术闪存磁盘存储器 局部性原理 高速缓存cache访存性能概念命中与缺失访存阻塞的周期数 cache基础&#xff1a;直接映射块号内存地址字段缺失缺失处理和写策略 全相联映射组相连映…

github高分项目 WGCLOUD - 运维实时管理工具

GitHub - tianshiyeben/wgcloud: Linux运维监控工具&#xff0c;支持系统硬件信息&#xff0c;内存&#xff0c;CPU&#xff0c;温度&#xff0c;磁盘空间及IO&#xff0c;硬盘smart&#xff0c;GPU&#xff0c;防火墙&#xff0c;网络流量速率等监控&#xff0c;服务接口监测&…

A021基于Spring Boot的自习室管理和预约系统设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

【EasyExcel】EasyExcel导出表格包含合计行、自定义样式、自适应列宽

目录 0 EasyExcel简介1 Excel导出工具类设置自定义表头样式设置自适应列宽添加合计行 2 调用导出工具类导出Excel表3 测试结果 0 EasyExcel简介 在数据处理和报表生成的过程中&#xff0c;Excel是一个非常常用的工具。特别是在Java开发中&#xff0c;EasyExcel库因其简单高效而…

2024年11月09号Drawing Memory Models Review 2

So lets start with a piece of code that well be thinking about and take a few seconds to read it carefully and try to explain, in your own words, what this piece of code does.

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得 (二)

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得 &#xff08;二&#xff09; 一、前言 目前鸿蒙应用的实现逻辑&#xff0c;基本都是参考和移植Android端来实现。针对BLE低功耗蓝牙来说&#xff0c;在鸿蒙化的实现过程中。我们发现了&#xff0c;鸿蒙独有的优秀点&#xff0c…

2024年【流动式起重机司机】模拟考试及流动式起重机司机证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 流动式起重机司机模拟考试考前必练&#xff01;安全生产模拟考试一点通每个月更新流动式起重机司机证考试题目及答案&#xff01;多做几遍&#xff0c;其实通过流动式起重机司机模拟考试题很简单。 1、【多选题】( )和…

混合搜索与多重嵌入:一次有趣又毛茸茸的猫咪搜索之旅!(二)

这是继上一篇文章 “混合搜索与多重嵌入&#xff1a;一次有趣又毛茸茸的猫咪搜索之旅&#xff01;&#xff08;一&#xff09;” 的续篇。这这篇文章中&#xff0c;我们讲使用本地 Elasticsearch 部署来完成整个演示。这是一个简单的 Python Web 应用程序&#xff0c;展示了可…

算法【Java】—— 动态规划之路径问题

前言 本文章终点解析第一道题目【不同路径】和最后一道题目【地下城游戏】的动态规划思路&#xff0c;中间几道题目会很快过完&#xff0c;大家如果不熟悉动态规划的思路可以重点看一下这两道题目的解析。 不同路径 https://leetcode.cn/problems/unique-paths 解析&#xf…

FPGA实现串口升级及MultiBoot(五)通过约束脚本添加IPROG实例

本文目录索引 一个指令和三种方式通过约束脚本添加Golden位流工程MultiBoot位流工程验证example1总结代码缩略词索引: K7:Kintex 7V7:Vertex 7A7:Artix 7MB:MicroBlaze上一篇文章种总结了MultiBoot 关键技术,分为:一个指令、二种位流、三种方式、四样错误。针对以上四句话我…

jmeter基础02_下载安装jmeter

&#xff08;安装包windows、mac、Linux通用&#xff09; Step1. 官网下载 官网地址&#xff1a;https://jmeter.apache.org/download_jmeter.cgi 官网可见最新版本的jmeter和要求的jdk版本&#xff0c;先说结论&#xff1a;建议下载Binaries-zip格式包即可。 安装包有2大类&am…