git缓存区、本地仓库、远程仓库的同步问题(初始化库无法pull和push)

git新建库与本地库同步

gitee使用教程,git的下载与安装接不在叙述了。

  1. 新建远程仓库
    在这里插入图片描述新建远程仓库必须要使用仓库提供的api,也就是仓库门户网站,例如gitee,github,gitlab等。在上图中使用gitee网址中新建了一个test仓库,默认生成一个master分支,新建仓库时里面必须要有文件,这是git得要求。

另外第一次生成时候可能还会出现一个教程,一些配置命令:

git创建一个仓库的初始化操作

  • git config --global user.name "xiaoxu"
  • git config --global user.email xiaoxu@example.com
  • git init
  • touch README
  • git add .
  • git commit -m "message"
  • git remote add XXX
  • ...

git config --list查看更多命令gitee教程

其中实现本地仓库绑定远程仓库同步的就是git remote add了。

初始化本地仓库并绑定远程仓库地址后,就可以实现上传文件并同步文件了:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
上传步骤就在本地初始化了一个仓库,但是git还未对新建的文件追踪。除了上述初始化外还可以从远程仓库直接克隆到本地git clone xxx

在这里插入图片描述
远程test仓库被克隆下来,包含初始化额文件:
在这里插入图片描述

上述两种均可创建本地仓库,但是第二种是更方便的,如果gitee门户网站配置了的话,本地仓库就无需任何配置,但是如果是克隆的别人的仓库,就需要修改配置。

git文件追踪

初始化仓库的两种方式与区别

git init创建完仓库后就需要对文件实现追踪,使用的git命令是git add将需要上传的文件添加到git缓存区,就实现了追踪了。

可以使用git status查看追踪状态,只有被git追踪的文件才会被上传。类似于vsode,idea只是ide,不管如何在其中修改代码,都不会改变git缓存区中的文件,当删除了编辑器的文件,git缓存区任然存在,必须通过其它文件清楚缓存区文件,但是一般情况下类似于idea,goland实现vcs绑定git后都自动绑定了删除命令,无需人为操作。在编辑器中删除某些文件自动同步到git缓存区和本地仓库

在上一节新建仓库后,通过git add命令添加文件到git缓存区实现git链路追踪:

在这里插入图片描述> git status命令可以看到默认创建的mater分支和缓存区中的new file,当然也显示了git rm --cached命令后续在讲。

git commit命令推送到本地仓库

在这里插入图片描述>本地仓库非常重要,因为线上的仓库内容都来自本地仓库。

推送本地仓库融合到远程仓库git push命令
在这里插入图片描述然后就出错了,这里可能想到本地库只有README文件,而线上库可不止,而且文件内容也不一样。
在这里插入图片描述在这里插入图片描述
那么把线上的pull一下merge后再推送呢?然而如下:

在这里插入图片描述
又出现一大堆提示,而且文件也没拉下来,这里既不可以pull,又不可以push是什么情况呢?

这是由于两个仓库不同源,git的链路追踪是独立的,因此两个不同的git链路追踪不可使用git命令融合,只有同源的链路追踪才可以使用git得命令。

本地仓库和远程仓库有不同的开始点,也就是两个仓库没有共同的commit出现,无法提交,此时我们需要allow-unrelated-histories

显然这才初始化的过程中是不合理的,git官方也提供了响应的更改使得不同源的可以融合,更改命令如下:

git pull origin master --allow-unrelated-histories
通过上面的更改,在git pull一次后,线上被merge到本地仓库中,代码融合,实现了同源。这时再pull就可以了,提交上去的本地仓库也是融合了的。

在这里插入图片描述
在克隆时候仓库名会以文件的格式生成,因此直接克隆下来的是一个文件下,对文件的操作需要进入该文件里:

  • cd test

在这里插入图片描述可以看到文件下存在一个.git文件表示存在git仓库,并且配置和远程一模一样,文件也都一样。

vi hello
在这里插入图片描述在这里插入图片描述
在这里插入图片描述git add加入git追踪后git commit提交到本地仓库,甚至都不需要git pull一下就能直接git push而且是成功上传。
在这里插入图片描述在这里插入图片描述

建议

建议都使用git clone命令创建本地仓库,因为是直接把线上克隆下来都是完全一样的,但是克隆别人的仓库需要修改配置可能麻烦点,自己仓库时非常方便的,如下test1文件中就是克隆完成的。

缓存、本地仓库、远程仓库同步问题

|     
|     缓存   =========》   本地仓库    =========》   远程仓库
|

首先在使用idea,goland等ide时如果初始化了git仓库并实现了远程仓库连接(同源配置成功)后,用ide打开文件,会自动实现git得绑定,除了git commit,git pull,git push命令外其它都是自动化实现了,无需人为操作,但是是ide在后台执行了命令。如下:

在这里插入图片描述甚至都没有git add , git rm , git rebase , git restore 等其它命令。

git add命令在创建文件时就执行了,如果第一次使用可能会提示一下,有view files, always add , do not ask again的选项,如下:

在这里插入图片描述甚至会贴心使用不同的颜色区分,如下main.go

在这里插入图片描述
当点击左下角的always add后就可以使其不再弹出了,但是有遇到一个问题,如果创建的文件不想添加到git追踪中该如何操作呢?

  1. 在这里不总是添加,点击View Files选择添加,使创建文件时手动选择。
  2. 直接关闭弹窗,都不添加,使用git add在terminal指定添加
  3. always add后在缓存中添加但是不上传到本地仓库,同步远程时也自然不会上传到远程。

建议:建议都选always add添加到缓存无所谓的,通过.gitignore文件配置一下不上传到本地仓库就可以了。不限麻烦也可以手动操作。

文件 .gitignore 的格式规范如下:

所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配。
匹配模式最后跟反斜杠(/)说明要忽略的是目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

# 此为注释 – 将被 Git 忽略# 忽略所有 .a 结尾的文件*.a# 但 lib.a 除外!lib.a# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO/TODO# 忽略 build/ 目录下的所有文件build/# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txtdoc/*.txt

ide自动完成了大多是的工作,那么离开ide使用命令该如何处理呢?

git缓存区删除文件并清除文件跟踪

git将git add到缓存区的内容移除使用git rm 。如果直接删除文件不管git追踪会发生什么呢?

在这里插入图片描述
如果直接删除可以看到git已经检测到文件被删除了,如下
在这里插入图片描述
在这里插入图片描述
远程仓库的hello文件还存在,如下图:

在这里插入图片描述git commit提交到本地仓库

在这里插入图片描述git push提交到远程仓库
在这里插入图片描述结果发现main.go成功提交,但是hello任然在远程仓库中,
在这里插入图片描述说明本地仓库还存在hello文件,本地仓库文件是从缓存区提交的,那么缓存区也还存在,可见直接删除文件并不会销毁git得文件追踪。

git rm 命令从缓存区移除指定文件

在这里插入图片描述

git rm 就是rm + git reset的合体,本地文件也一起删了,但是git reset只移除git追踪不会删除本地文件

如下对比,直接删除

在这里插入图片描述git rm移除缓存区后再次提交,删除过程和记录也被提交,如下:
在这里插入图片描述
再次推送到远程仓库

在这里插入图片描述
可以看到远程删除过程也同步了,本地仓库的删除merge到远程仓库,hello文件消失

在这里插入图片描述
在提交记录里面查看也记载了hello被删除了

在这里插入图片描述
和本地如初一折

在这里插入图片描述

git reset命令

git reset命令也是可以将暂存区的文件取消暂存另外还可以切换到指定版本,git reset HEAD切换到上一个版本。

再次新建hello文件并缓存

在这里插入图片描述
git reset命令取消缓存

在这里插入图片描述
现在测试回溯上一个版本功能,如下查看hello内容为hello
在这里插入图片描述git add后追加内容,再次git add,如下

在这里插入图片描述

git已经检测出来hello文件被修改了modified,但是可以看到modified hello部分是在Changes not staged for commit中的,也就是修改部分还没被git跟踪。

在这里插入图片描述如上图所示重新git add到缓存区,此时修改的部分也添加到缓存区了。git reset一次查看,如下

在这里插入图片描述git reset后hello回到了没被git追踪的状态。

git reset HEAD 是回溯到上一版本。

git restore命令

git restore命令是撤销的意思,文件从未被git追踪撤销,回到被追踪的状态,就是说git reset的逆命令,该命令有git restore <file>it restore --staged <file>两种常用的用法。

前者用户撤销未被git追踪切没有在工作区修改的撤销,(撤销修改了的文件不会报错,但没反应)后者撤销被移除git追踪且修改的文件(保留修改)。

没有直接的命令可以操作本地仓库,这是由于本地仓库是远程仓库的一个分支,如果随便修改可能造成无法融合代码,所以对文件的所有修改和变动都记录再缓存中,确定后再将需要融合的代码提交到本地仓库。

例如需要删除一个多余的文件,就需要在缓存区中先删除文件,再提交到本地仓库,git追踪记录删除的过程,提交后git系统自动应用删除记录,从而使本地仓库也同步进行。

案例:commit了words文件,需要删除它,并同步到远程仓库?

  • git rm hello (或者git reset)
  • git commit

上述两部直接同步了,应为缓存区的操作会被记录并在git commit 时自动应用,本地仓库是没有直接命令修改的,开发者对缓存区操作,操作被git系统记录,并在下一次git commit时自动应用。

在这里插入图片描述

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

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

相关文章

回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 (多指标,多图)

回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 &#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍…

HarmonyOS(十五)——状态管理之@Prop装饰器(父子单向同步)

上一篇文章我们认识了状态管理的State装饰器&#xff08;组件内状态&#xff09;&#xff0c;接下来我们学习另外一个状态管理装饰器Prop装饰器。 Prop装饰的变量可以和父组件建立单向的同步关系。Prop装饰的变量是可变的&#xff0c;但是变化不会同步回其父组件。 说明&#…

10分钟微调专属于自己的大模型

本文主要介绍使用魔搭社区轻量级训练推理工具SWIFT&#xff0c;进行大模型自我认知微调&#xff0c;帮助初阶炼丹师快速微调出专属于自己的大模型。 SWIFT&#xff08;Scalable lightWeight Infrastructure for Fine-Tuning&#xff09;是魔搭ModelScope开源社区推出的一套完整…

泰坦陨落2找不到msvcr120文件的修复方法,分享多种解决方法

在玩泰坦陨落2这款游戏时&#xff0c;有些玩家可能会遇到找不到msvcr120.dll文件的问题。这个问题可能是由于游戏缺少必要的运行库导致的。下面我将分享一些解决这个问题的方法&#xff0c;希望对大家有所帮助。 一、问题分析 msvcr120.dll是Microsoft Visual C Redistributab…

MATLAB - 使用 MPC Designer 线性化 Simulink 模型

系列文章目录 前言 本主题介绍如何使用 MPC Designer 对 Simulink 模型进行线性化。为此&#xff0c;请从包含 MPC 控制器块的 Simulink 模型打开该应用程序。本例中使用 CSTR_ClosedLoop 模型。 open_system(CSTR_ClosedLoop) 在模型窗口中&#xff0c;双击 MPC 控制器模块。…

Vue中英文翻译小结

背景&#xff1a;时局艰难&#xff0c;后端开发被强制写了vue&#xff0c;这不有个需求是中英文翻译&#xff0c;特此记录下&#xff0c;该怎么个翻译法子。 先引入全局的路由国际化文件&#xff0c;zh.js 和 en.js 1.关于插值表达Button里面 {{ $t(reinsop.common.back) }} …

LazyIDA源码阅读

LazyIDA是一款IDA插件&#xff0c;项目地址GitHub - L4ys/LazyIDA: Make your IDA Lazy! 外部引用 from __future__ import division from __future__ import print_function from struct import unpack import idaapi import idautils import idcfrom PyQt5.Qt import QAppli…

vue中的事件修饰符、表单双向数据绑定和计算属性

目录 一、事件修饰符 二、表单双向数据绑定 模拟双向数据绑定&#xff08;双向数据绑定底层原理&#xff09; 三、计算属性 计算属性和methods方法区别&#xff1f; 计算属性和watch区别&#xff1f; 一、事件修饰符 stop 阻止事件冒泡 prevent 阻止事件默认行为 ca…

Linux线程——互斥锁

概念 互斥量&#xff08;mutex&#xff09;从本质上来说是一把锁&#xff0c;在访问共享资源前对互斥量进行加锁&#xff0c;在访问完成后释放互斥量上的锁。对互斥量进行加锁后&#xff0c;任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。 如果释放…

【HCIP学习记录】OSPF之DD报文

1.OSPF报文格式 24字节 字段长度含义Version1字节版本&#xff0c;OSPF的版本号。对于OSPFv2来说&#xff0c;其值为2。Type1字节类型&#xff0c;OSPF报文的类型&#xff0c;有下面几种类型&#xff1a; 1&#xff1a;Hello报文&#xff1b;● 2&#xff1a;DD报文&#xff1…

美国联邦机动车安全标准-FMVSS

FMVSS标准介绍&#xff1a; FMVSS是美国《联邦机动车安全标准》&#xff0c;由美国运输部下属的国家公路交通安全管理局(简称NHTSA)具体负责制定并实施。是美国联邦政府针对机动车制定的安全标准&#xff0c;旨在提高机动车的安全性能&#xff0c;减少交通事故中的人员伤亡。F…

ubuntu无 root 权限安装 screen

网上的方法主要是如下图的方法&#xff0c;源码安装&#xff0c;但是我一直 make install失败显示没有权限 然后选择放弃&#xff0c;然后随便试了一下方法 2&#xff0c;成功 方法 1 方法 2 pip3 install screen结果&#xff1a;

生物识别应用指纹的算法是什么样的?有什么性能?

方案特点 • 采用金融级安全芯片 ACH512 的指纹模组&#xff0c;指纹和密码安全存储&#xff0c;云端数据安全传输 • 采用高性能指纹专用安全MCU芯片ACM32FP4&#xff0c;支持小点阵图像算法处理 • 支持80*64、88*112、96*96、160*160、192*192等像素传感器 • 已适配传…

Ubuntu系统使用Nginx搭建RTMP服务器

环境&#xff1a; 推流端 rockpi s 主控rk3308 运行ubuntu系统 服务端 ubuntu 播放器 VLC播放器 服务端安装依赖&#xff1a; apt-get install build-essential libpcre3 libpcre3-dev libssl-dev创建nginx编译目录&#xff1a; mkdir my_nginx_rtmp cd my_nginx_rtmp/下载 …

计算机网络:物理层(编码与调制)

今天又学会了一个知识&#xff0c;加油&#xff01; 目录 一、基带信号与宽带信号 1、基带信号 2、宽带信号 3、选择 4、关系 二、数字数据编码为数字信号 1、非归零编码【NRZ】 2、曼彻斯特编码 3、差分曼彻斯特编码 4、归零编码【RZ】 5、反向不归零编码【NRZI】 …

查找Apple Watch的序列号有重要意思,主要有两种方法

如果你打算购买二手Apple Watch&#xff0c;你可能需要检查它的序列号或IMEI号&#xff0c;来确保可靠性。以下是如何从Apple Watch和iPhone中查找序列号。 在Apple Watch上查找序列号和IMEI 1、在Apple Watch上&#xff0c;按下手表表面的数字皇冠以打开应用程序网格或列表。…

【设计模式--行为型--访问者模式】

设计模式--行为型--访问者模式 访问者模式定义结构案例优缺点使用场景扩展分派动态分派静态分派双分派 访问者模式 定义 封装一些作用于某种数据结构中的各元素的操作&#xff0c;它可以在不改变这个数据结构的前提下定义作用于这些元素的新操作。 结构 抽象访问者角色&…

晶体管的工作状态判断和工作条件

晶体管是模拟电路中基础的器件&#xff0c;对于电子工程师来说&#xff0c;了解晶体管工作的条件和判断晶体管的工作状态都是非常基础的&#xff0c;本文将带大家一起学习或回顾一下。 一、晶体管工作的条件 1.集电极电阻Rc&#xff1a; 在共发射极电压放大器中&#xff0c;…

HPM6750系列--第十篇 时钟系统

一、目的 上一篇中《HPM6750系列--第九篇 GPIO详解&#xff08;基本操作&#xff09;》我们讲解了HPM6750 GPIO相关内容&#xff0c;在进一步讲解其他外设功能之前我们有必要先讲解一下HPM6750的时钟系统。 时钟可以说是微控制器系统中的心脏&#xff0c;片上外设模块必须依赖时…

爱普生手机打印助手Epson Smart Panel下载分享

新一代智能打印Epson Smart Panel为您提供一站式打印服务&#xff0c;人性化装机助手&#xff0c;智能联网&#xff0c;快速开启远程微信打印&#xff0c;全新交互式设计&#xff0c;打印体验焕新升级&#xff1b; 根据手机不同可选下列不同下载方式&#xff1a; 人性化智能装机…