【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…

Neo4j Cypher WHERE子句详解 - 初学者指南

Neo4j Cypher WHERE子句详解 - 初学者指南 前言1. WHERE子句基础1.1 WHERE子句的本质1.2 示例数据 2. 基本用法2.1 节点属性过滤2.2 关系属性过滤 3. 高级过滤技巧3.1 字符串匹配3.2 正则表达式3.3 属性存在性检查 4. 列表和范围操作4.1 IN操作符4.2 范围查询 5. 空值处理5.1 默…

【鸿蒙】开发者攻略:借力鸿蒙生态,打造全场景应用新体验

在当前智能操作系统竞争日益激烈的环境中,鸿蒙系统以其独特的分布式特性和跨平台能力,逐渐在多个领域展现出强大的竞争力。对于开发者而言,以下是抓住鸿蒙生态崛起机遇、应对开发挑战、创造优质应用体验的策略: 一、深入挖掘鸿蒙…

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

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

【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】试卷(1)

前言 大家好吖,欢迎来到 YY 滴计算机网络 系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 本博客主要内容,收纳了一部门基本的计算机网络题目,供yy应对期中考试复习。大家可以参考 本章是去答案版本。带答案的版本在下…

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 …

C#-密封类、密封方法

一&#xff1a;密封类 关键字&#xff1a;sealed 密封类&#xff1a; sealed class Enemy{} 密封方法&#xff1a;密封方法必须是被重写的方法 public sealed override void Move(){...} 密封类不能被继承&#xff0c;密封方法不能被重写 → 让类无法再被继承 加强面向对象…

onnx-runner:使用ORT运行YOLO的ONNX模型

onnx-runner onnx-runner使用 ORT 运行 ONNX 模型&#xff0c;使用Rust构建。 目前仅支持 YOLO 模型&#xff0c;未来可能会支持其他 ONNX 模型 安装 要求 如果您想使用 CPU 运行 onnx-runner&#xff0c;则无需安装如果您想使用 GPU 运行 onnx-runner&#xff0c;则需要安…

Vue:侦听属性

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

朴素贝叶斯分类器基于iris及Python手写实现

数据来源为sklean.datasets中的load_iris&#xff0c;代码如下&#xff1a; # -*- coding:utf-8 -*- import numpy as np import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import ac…

SwiftUI开发教程系列 - 第1章:简介与环境配置

1.1 SwiftUI简介 SwiftUI 是 Apple 于 2019 年推出的声明式用户界面框架&#xff0c;旨在简化 iOS、macOS、watchOS 和 tvOS 应用的 UI 开发。与 UIKit 的命令式编程方式不同&#xff0c;SwiftUI 提供了一种声明式语法&#xff0c;让开发者可以以更加直观、简洁的方式构建 UI。…

Flutter 中 Provider 的使用指南

目录 1.什么是 Provider 2.如何安装 Provider 3.基本使用方式 1.使用ChangeNotifierProvider提供状态 2.使用 Provider.of 手动读取状态 3.多Provider 的使用 4.常见的 Provider 类型 在 Flutter 开发中&#xff0c;状态管理是一个常见的需求。Provider 是 Flutter 官方…

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

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

lua入门教程:type函数

在Lua中&#xff0c;type 函数是一个内置函数&#xff0c;用于返回给定值的类型。Lua 支持多种数据类型&#xff0c;包括 nil&#xff08;空值&#xff09;、boolean&#xff08;布尔值&#xff09;、number&#xff08;数字&#xff09;、string&#xff08;字符串&#xff09…

Centos 7离线安装ntpd服务

本文涉及一次Centos 7系统中离线安装ntpd对时服务的过程&#xff0c;其目的是为了在服务器运行过程中能够实时同步时间。 问题提出 某服务器需部署业务程序&#xff0c;这些程序的部署脚本是我初创的&#xff0c;后因其它事转交给其他人&#xff0c;后再因其它事又兜兜转转到了…