git仓库与本地暂存区的同步问题

向下同步

对于远程仓库的项目,初始化一个配置文件,配置远程仓库及相关信息,赋值远程仓库的地址,使用git pull命令即可拉取仓库代码。

git pull [remote_addr]

该部分完成向下同步

向上同步

向上同步时会遇到很多的问题,比较顺利的是add,commit,push没有障碍。

git add .

项目文件添加到工作区

git commit -m "msg"

项目文件添加到暂存区

git push [remote_addr] [remote_git]:[local_git]

项目文件推送到远程仓库

如果遇到障碍一般会遇到两个层面的障碍:

  1. 工作区与暂存区同步

git一般都有.gitignore用户屏蔽非必要文件。工作区是未和git产生联系的目录,此时还未进入git版本管理,.gitignore可以选择那个文件将会被提交到缓冲区。

.gitignore文件的使用方法 首先,在你的工作区新建一个名称为.gitignore的文件。 然后,把要忽略的文件名填进去,Git就会自动忽略这些文件。github上有一些常用的忽略文件

使用gitignore文件实现工作区与缓存区的文件筛选。

在git代码提交时首先通过git add将命令添加到缓冲区,这个步骤在有些ide中会自动完成。只有先提交到缓存区的代码才会进入git版本记录。

git工作区可以理解为开发者可以看得见的,任意编辑的文件,例如如下文件夹

在这里插入图片描述
在这里插入图片描述
这里的所有内容都是工作区的内容,通过使用了git add命令将文件并使用gitignore筛选后提交到缓存区。

需要将那么些文件添加到工作区可以使用如下命令:

git add *  # 将工作区所有修改添加到暂存区
git add .  # 将工作区所有修改添加到暂存区
git add <file-name>  # 将指定文件添加到暂存区
git add *.js  # 提交所有 .js 格式文件
git add -f <file-name>  # 强制添加 指定文件添加到暂存区

# 注:<file-name> 指的是文件的名称

在commit时一般将所有文件提交,所以git add最好时有选择性的提交。

如下初始化一个git仓库将所有内容添加到工作区中
在这里插入图片描述
git status查看状态
在这里插入图片描述
此时代码已经被提交到缓冲区了。

如果gitignore漏写导致提交了一些无关代码该如何撤回或者删除呢?

git reset命令撤销缓存文件

使用git reset命令撤销.idea文件

在这里插入图片描述
git reset命令

git reset <file-name>   # 从暂存区恢复指定到工作区
git reset  .          # 从暂存区恢复所有文件到工作区
git reset --hard        # 把暂存区的修改退回到工作区

git reset撤销就是恢复未使用git add命令之前。
这里会遇到的问题是git commit后git reset会导致本地仓库和缓存区不一样,该问题在会面讲解。

git reset是撤回commit的操作也就是撤回本地仓库的提交,由于缓存区(git add)和本地仓库(git commit)是联级操作的因此再git rest也能对缓存区撤回(简单来水就是reset是撤回commit的,由于缓存区和本地仓库要是联级操作,没有commit直接撤回了add的内容)

git restore命令是专属用来撤销缓存区代码的,也就是返回git add之前的状态。

该命令又分两种情况,缓存区的内容和本地仓库内容是否一致,如果对文件增加了新的功能话,比本地仓库内容多,再git restore是就需要考虑是否保留这些内容。

git restore --staged将本地仓库的内容撤销到缓存区并保留修改
git restore将本地仓库内容撤销到缓存区不保留修改

git restore就是撤回git add提交。

例如,git add添加新文件

在这里插入图片描述
git resotre撤回并保留工作区修改,如果不用–staged那么新追加的代码就消失了
在这里插入图片描述
撤销了缓存:
在这里插入图片描述

😃😃😃😃git resetgit restore相似之处在于他们都能撤回缓存区内容,也就是git add的内容,(reset是由于联级操作完成);不同之处在于rest还可以操作本地仓库即(commit的内容),后者只能操作缓存区。

在这里插入图片描述
看上图,查看本地仓库没有.idea/etcd.iml文件(没有commit),使用git reset命令撤回了缓存区的该文件Untracked fiels出现了该文件。

在这里插入图片描述
如上图,说明git restore并不能撤回本地仓库的文件。

在这里插入图片描述
如上图所示,git restore撤回缓存区内容。

git status😀😁用于查看工作区、暂存区的状态,会经常用到。

git rm --cached <file-name> 命令将本地暂存区的内容移除,直接删除文件的git索引,从而删除文件跟踪。

在这里插入图片描述
git rm直接将本地仓库和缓存区的内容直接删除了。

  1. 暂存区与本地仓库同步

git commit将暂存区的内容提交到本地仓库,如下未当前缓存区内容:

在这里插入图片描述
git commit将缓存区全部内容提交,因此在工作区提交到缓存区是需要认证筛选。如下,git commit命令提交代码

在这里插入图片描述

git commit <file-name> ... "相关的记录信息"   # 将缓存区的指定文件提交到本地仓库
git commit -m "相关的记录信息"   	  # 将缓存区的所有文件提交到本地仓库

如果缓存区没有仔细筛选,导致不必要文件提交到了本地仓库,git也提供了git revert撤销提交。

git revert HEAD

在这里插入图片描述

注意revert命令会回溯到前一个commit的版本,如果只有一个版本,那么本地文件也会消失,注意revert时一定要大于一个版本。

git rm删除本地仓库的文件

在这里插入图片描述

git提交了多余的内容或者想删除之前提交的内容,可以使用该命令,对本地仓库的操作都是联级操作,对本地仓库的操作和缓存区是同步的。

git rm --cached注意一定要携带-cached不然会将本地文件一起删除了,除非完全不需要了。

把.idea文件直接删除了是无效的,因为此时的删除只是把工作区删除了,缓存区还在,本地仓库。这次文件仍然在commit的本地仓库,在写新代码是新代码不断从工作区git add,再git commit,被merge到commit的本地仓库。如下图

在这里插入图片描述

直接删除只是将工作区的文件删除了,缓存区和本地仓库仍然存在,可查看,git status查看缓存区文件状态
git ls-files -c查看本地仓库文件状态git ls-files -h获取更多命令

在这里插入图片描述
在这里插入图片描述

git直接检索出了文件目录下被删除的文件,也给出了方法(git add重新添加,git rm删除工作区文件,git restore)

git ls-files --help查看有关本地文件的命令

在这里插入图片描述

通过git rm删除缓存区内容,git rm命令比较特殊是链级删除,首先本来开发者就要删除文件目录的文件,又要删除工作区和暂存区,rm就很好完成该工作,一次性删除三个位置的文件,分三种情况:
(未commit,已add,只删除add的部分;以commit,以add,全部删除;未commit,未add,删除不了,未与git所有)

不会出现以commit,未add的情况,应为commit和add是关联的,一样的。另外删除均将文件目录的文件也删除了。

由于git在提交时都是从缓存区全部提交,因此在删除本地仓库时缓存区也同步删除了,这也是必须的,不然下次再提交如果缓存区还存在又被提交上去了,一次类推,对本地仓库的操作都是和缓存区同步的,这些有git系统自动完成。

git revert是通过切换不同的提交版本号实现代码回溯,git rm是直接删除文件,git reset是撤回缓存区提交的内容,这些命令各有不同但都能实现代码回溯功能,而且缓存区随本地仓库自动变化。

更多问题请移步论坛Git问答

极客笔记™ - 深入浅出打磨IT笔记

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

6.3 填充和步幅

一.填充 1.作用&#xff1a; 为了防止丢失边缘像素。如240x240的像素图像&#xff0c;经过10层5x5卷积&#xff0c;变成了200x200像素。可以根据输出形状计算公式 (w-k1) x (h-k1)计算得出。 2.方法: 最常用的方法是填充0。如下&#xff1a; 3.公式&#xff1a;计算填充原…

matlab计算基础

目录 1. 创建矩阵和向量 2. 矩阵的基本运算 2.1 数乘 2.2 转秩 2.3 求逆 2.4 点积 2.5 拼接 3. 复数 4. 矩阵元素的引用 5.工作区中数据的保存和使用 1. 创建矩阵和向量 向量包括行向量和列向量&#xff0c;向量就是个特殊的矩阵&#xff0c;向量可看作C语言中的一维…

SpringBoot手撕登陆验证码-【JSB项目实战】

SpringBoot系列文章目录 SpringBoot知识范围-学习步骤【JSB系列之000】 文章目录 SpringBoot系列文章目录本系列校训 SpringBoot技术很多很多环境及工具&#xff1a;上效果图目前流行的验证码技术介绍在springBoot项目里如果手撕验证码然后private void createCaptch(String …

SpringBoot第31讲:SpringBoot集成ShardingJDBC - Sharding-JDBC简介和基于MyBatis的单库分表

SpringBoot第31讲&#xff1a;SpringBoot集成ShardingJDBC - Sharding-JDBC简介和基于MyBatis的单库分表 本文是SpringBoot第31讲&#xff0c;主要介绍分表分库&#xff0c;以及SpringBoot集成基于ShardingJDBCMyBatis的单库分表实践 文章目录 SpringBoot第31讲&#xff1a;Spr…

continue有什么作用

学习算法以来&#xff0c;break使用的比较多&#xff0c;continue使用的比较少&#xff0c;只知道break是跳出循环的作用,不知道continue有什么作用。 continue可以跳过本次循环&#xff0c;强制执行下一次循环。 比如这个代码 #include<iostream>using namespace std…

Swish - Mac 触控板手势窗口管理工具[macOS]

Swish for Mac是一款Mac触控板增强工具&#xff0c;借助直观的两指轻扫&#xff0c;捏合&#xff0c;轻击和按住手势&#xff0c;就可以从触控板上控制窗口和应用程序。 Swish for Mac又不仅仅只是一个窗口管理器&#xff0c;Swish具有28个易于使用的标题栏&#xff0c;停靠栏…

element+vue 之动态form

1.页面部分 <div v-for"(item,index) in formList" :key"index"><el-col :span"6" v-if"item.inputType0"><el-form-item :label"item.conditionName" :prop"item.conditionCode":rules"{req…

网络安全(黑客)自学就业

前段时间&#xff0c;遇到网友提问&#xff0c;说为什么我信息安全专业的找不到工作&#xff1f; 造成这个结果主要是有两大方面的原因。 第一个原因&#xff0c;求职者本身的学习背景问题。那这些问题就包括学历、学校学到的知识是否扎实&#xff0c;是否具备较强的攻防实战…

【C++】——模板

目录 泛型编程函数模板函数模板的概念函数模板格式&#xff1a;函数模板的原理函数模板的实例化模板参数的匹配原则 类模板类模板定义格式类模板的实例化 泛型编程 泛型编程&#xff1a;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。模板是泛型编程的基础 引例…

Go For Web:Golang http 包详解(源码剖析)

正文&#xff1a; Golang http 包详解&#xff08;源码剖析&#xff09; 前面小节我们认识了 Web 的工作方式&#xff0c;也成功用 Go 搭建了一个最简单的 Web 服务了解了 Golang 运行 Web 的原理。现在我们详细地去解剖以下 http 包&#xff0c;看看它如何实现整个过程的 Go…

【UEC++学习】UE网络 - Replication、RPC

1. UE网络架构 &#xff08;1&#xff09;UE的网络架构是SC&#xff08;Server - Client&#xff09;的模式&#xff0c;这种模式的优势&#xff1a;这种模式让所有客户端都在服务器端进行安全验证&#xff0c;这样可以有效的防止客户端上的作弊问题。 &#xff08;2&#xff…

机器学习和深度学习简述

一、人工智能、机器学习、深度学习的关系 近些年人工智能、机器学习和深度学习的概念十分火热&#xff0c;但很多从业者却很难说清它们之间的关系&#xff0c;外行人更是雾里看花。概括来说&#xff0c;人工智能、机器学习和深度学习覆盖的技术范畴是逐层递减的&#xff0c;三…

Linux命令200例:grep强大的文本搜索工具使用及15个精选示例(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f3c6;本文已…

[C++] 类与对象(中)完整讲述运算符重载示例 -- 日期类(Date) -- const成员

目录 1、前言 2、全缺省的构造函数 3、打印接口 4、拷贝构造 5、赋值运算符重载&#xff08;operator&#xff09; 5.1赋值重载是默认成员函数&#xff0c;重载格式&#xff1a; 5.2 赋值重载不能为全局函数 5.3 编译器默认生成 6、析构函数 7、operator> 8、ope…

国内GitHub加速访问工具-Fetch GitHub Hosts

一、工具介绍 Fetch GitHub Hosts是一款开源跨平台的国内GitHub加速访问工具&#xff0c;主要为解决研究及学习人员访问 Github 过慢或其他问题而提供的 Github Hosts 同步工具。 项目原理&#xff1a;是通过部署此项目本身的服务器来获取 github.com 的 hosts&#xff0c;而…

MySql之索引下推

什么是索引下推 索引下推(Index Condition Pushdown&#xff0c;简称ICP)&#xff0c;是MySQL5.6版本的新特性&#xff0c;它能减少回表查询次数&#xff0c;提高查询效率。 索引下推优化的原理 我们先简单了解一下MySQL大概的架构&#xff1a; MySQL服务层负责SQL语法解析、…

图解java.util.concurrent并发包源码系列——深入理解AQS,看完可以吊打面试官

图解java.util.concurrent并发包源码系列——深入理解AQS&#xff0c;看完可以吊打面试官 AQS是什么&#xff1f;有什么作用&#xff1f;AQS的原理自定义资源资源的获取与释放线程阻塞等待唤醒 AQS源码核心成员变量Node 的内部结构waitStatusprev、next、threadnextWaiterprede…

网络安全公司校招面试会面试那些问题?

面试官会从那些方面去考察面试者&#xff1f; 以某安全公司的技术支持工程师岗位为例 面试官可能会从网络技术、操作系统、数据库、项目经验、语言表达以及个人擅长技能方面展开 面试官会提出那些问题来考查面试者呢&#xff1f; 网络基础方面的问题&#xff1a;请介绍一下…

运输层---概述

目录 运输层主要内容一.概述和传输层服务1.1 概述1.2 传输服务和协议1.3 传输层 vs. 网络层1.4 Internet传输层协议 二. 多路复用与多路分解&#xff08;解复用&#xff09;2.1 概述2.2 无连接与面向连接的多路分解&#xff08;解复用&#xff09;2.3面向连接的多路复用*2.4 We…

《Python入门到精通》函数详解

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 函数 1、函数的调用2、函数的参数2.1、变量的就近原则2.2、传递参数2.3、形参和实…