【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.rhkb.cn/news/468874.html

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

相关文章

《Python网络安全项目实战》项目4 编写网络扫描程序

《Python网络安全项目实战》项目4 编写网络扫描程序 项目4 编写网络扫描程序任务4.1 扫描内网有效IP地址任务描述任务分析任务实施任务拓展 任务4.2 编写端口扫描工具任务描述任务分析任务实施相关知识任务评价任务拓展项目评价 项目4 编写网络扫描程序 许多扫描工具是由Pytho…

软件设计开发规程,制度(word原件)

技术解决方案过程包括: 1、选择最佳解决方案; 2、制定架构设计; 3、制定概要设计; 4、制定详细设计和数据库设计; 5、利用准则进行接口设计; 6、实现设计; 7、进行单元测试; 8、进行…

Spring Boot框架的知识分类技术解析

2 开发技术 2.1 VUE框架 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。 Vue 只关注视图层, 采用自底向上增量开发的设计。 Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 2.2 Mysql数据库 …

Knowledge Graph-Enhanced Large Language Models via Path Selection

研究背景 研究问题:这篇文章要解决的问题是大型语言模型(LLMs)在生成输出时存在的事实不准确性,即所谓的幻觉问题。尽管LLMs在各种实际应用中表现出色,但当遇到超出训练语料库范围的新知识时,它们通常会生…

Spark中的宽窄依赖

一、什么是依赖关系 这里通过一张图来解释: result_rdd是由tuple_rdd使用reduceByKey算子得到的, 而tuple_rdd是由word_rdd使用map算子得到的,word_rdd又是由input_rdd使用flatMap算子得到的。它们之间的关系就称为依赖关系! 二…

实现uniapp-微信小程序 搜索框+上拉加载+下拉刷新

pages.json 中的配置 { "path": "pages/message", "style": { "navigationBarTitleText": "消息", "enablePullDownRefresh": true, "onReachBottomDistance": 50 } }, <template><view class…

在vscode中如何利用git 查看某一个文件的提交记录

在 Visual Studio Code (VSCode) 中&#xff0c;你可以使用内置的 Git 集成来查看某个文件的提交历史。以下是具体步骤&#xff1a; 使用 VSCode 内置 Git 功能 打开项目&#xff1a; 打开你的项目文件夹&#xff0c;确保该项目已经是一个 Git 仓库&#xff08;即项目根目录下…

如何用python求导数

打开python运行环境。 导入微分的模块包&#xff1a;from sympy import *。 定义符号变量&#xff1a;x symbols(x) 定义一个函数&#xff1a;f x**9 diff diff(f,x)求导 最后输入diff&#xff0c;即可显示其变量值了。

Protobuf——基本使用

什么是Protobuf Protobuf是 Google的⼀种语⾔⽆关、平台⽆关、可扩展的序列化结构数据的⽅法&#xff0c;它可⽤于&#xff08;数据&#xff09;通信协议、数据存储等。 Protobuf类比于XML&#xff0c;是一种灵活&#xff0c;高效&#xff0c;自动化机制的结构数据序列化方法&…

【人工智能】ChatGPT多模型感知态识别

目录 ChatGPT辅助细化知识增强&#xff01;一、研究背景二、模型结构和代码任务流程一&#xff1a;启发式生成 三、数据集介绍三、性能展示实现过程运行过程训练过程 ChatGPT辅助细化知识增强&#xff01; 多模态命名实体识别&#xff08;MNER&#xff09;最近引起了广泛关注。…

Spring源码(十二):Spring MVC之Spring Boot

本篇将详细讨论Spring Boot 的启动/加载、处理请求的具体流程。我们先从一个简单的Spring Boot项目日志开始分析&#xff08;这里假设读者已经仔细阅读完了前面的文章&#xff0c;且对Spring源码有一定深度的了解&#xff0c;否则会看得一脸懵逼&#xff09;。 本文为2024重置…

c语言-教零基础/新手入门

C 简介 一提到语言这个词语&#xff0c;自然会想到的是像英语&#xff0c;汉语等这样的自然语言&#xff0c;因为它是人和人交换信息不可缺少的工具。而今天计算机普遍了我们生活的每一个角落&#xff0c;除了人和人的相互交流之外&#xff0c;我们必须和计算机交流。就像人类…

【安装配置教程】二、VMware安装并配置ubuntu22.04

一、准备&#xff1a; 虚拟机安装ubuntu&#xff0c;首先要先找到一个镜像&#xff0c;可以去ubuntu官方下载一个&#xff0c;地址&#xff1a;下载Ubuntu桌面系统 | Ubuntu&#xff0c;下载好iso的镜像文件后保存好&#xff0c;接下来打开VMware。 二、安装&#xff…

立体视觉的核心技术:视差计算与图像校正详解

立体视觉的核心技术&#xff1a;视差计算与图像校正详解 在立体视觉中&#xff0c;通过双目相机&#xff08;即左右两台相机&#xff09;的不同视角捕获的图像&#xff0c;结合几何关系&#xff0c;我们可以推算出场景中物体的深度。本文将深入讲解如何基于视差&#xff08;di…

深度学习基础练习:从pytorch API出发复现LSTM与LSTMP

2024/11/5-2024/11/7&#xff1a; 前置知识&#xff1a; [译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络 - wangduo - 博客园 【官方双语】LSTM&#xff08;长短期记忆神经网络&#xff09;StatQuest_哔哩哔哩_bilibili 大部分思路来自于&#xff1a; PyTorch LSTM和LSTMP…

scala学习记录,Set,Map

set&#xff1a;集合&#xff0c;表示没有重复元素的集合&#xff0c;特点&#xff1a;唯一 语法格式&#xff1a;val 变量名 Set [类型]&#xff08;元素1&#xff0c;元素2...&#xff09; 可变不可变 可变&#xff08;mutable&#xff09;可对元素进行添加&#xff0c;删…

Docker了解

Docker是一种容器化技术&#xff0c;它可以将应用程序和其依赖项打包到一个独立的、可移植的容器中&#xff0c;以便在不同的环境中运行。Docker基于Linux操作系统的容器化技术&#xff0c;可以提供更轻量、更快速、更灵活、更一致的应用部署和管理方式。 Docker的基本概念包括…

‘conda‘ 不是内部或外部命令,也不是可运行的程序或批处理文件,Miniconda

下载了conda&#xff0c;但是在cmd里执行conda --version会显示’conda’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 原因是环境变量里没有添加conda&#xff0c;无法识别路径。 需要在系统环境变量里添加如下路径&#xff1a; 保存之后重新打开cmd&am…

《TCP/IP网络编程》学习笔记 | Chapter 4:基于TCP的服务器端/客户端(1)

《TCP/IP网络编程》学习笔记 | Chapter 4&#xff1a;基于TCP的服务器端/客户端&#xff08;1&#xff09; 《TCP/IP网络编程》学习笔记 | Chapter 4&#xff1a;基于TCP的服务器端/客户端&#xff08;1&#xff09;理解TCP和UDPTCP/IP协议栈TCP/IP协议的诞生背景链路层网络层T…

【C语言】。末尼

用js写一个冒泡排序 当然可以。在JavaScript中&#xff0c;你可以使用递归的方式来实现冒泡排序算法。这是一个简单的示例&#xff1a; function bubbleSort(arr) { let len arr.length; if(len < 1){ return arr; // 如果数组只有一个元素或为空&#xf…