当前位置: 首页 > news >正文

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笔记

相关文章:

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

向下同步 对于远程仓库的项目&#xff0c;初始化一个配置文件&#xff0c;配置远程仓库及相关信息&#xff0c;赋值远程仓库的地址&#xff0c;使用git pull命令即可拉取仓库代码。 git pull [remote_addr] 该部分完成向下同步 向上同步 向上同步时会遇到很多的问题&#xf…...

MATLAB算法实战应用案例精讲-【图像处理】图像分类模型-LeNetAlexNetVGG

目录 LeNet 模型介绍 模型结构 模型实现 模型特点 模型指标 AlexNet...

ArcGIS API for JavaScript 4.x 教程(二)切换基础地图图层

了解如何更改地图中的基础地图图层。 基础地图图层&#xff1a; 基础地图层是用于访问和显示来自基础地图层服务的数据的层。它为地图或场景提供视觉和地理上下文&#xff0c;通常包含具有管理边界和地名的全局数据。 基本地图图层服务提供了许多基本地图图层样式&#xff0c;例…...

SpringBoot——如何读写使用JSON文件保存的数据

文章目录 1. 将数据写入JSON文件2. 从JSON文件读取数据2.1 读取单个对象2.2 读取对象列表 1. 将数据写入JSON文件 要将数据写入JSON文件&#xff0c;可以使用Spring Boot中提供的Jackson库。Jackson库是处理JSON的Java库&#xff0c;可以轻松地将对象转换为JSON字符串&#xff…...

SDU Crypto School - 计算不可区分性1

Encryption: Computational security 1-4 主讲人&#xff1a;李增鹏&#xff08;山东大学&#xff09; 参考教材&#xff1a;Jonathan Katz, Yehuda Lindell, Introduction to Modern Cryptography - Principles and Protocols. 什么是加密 首先&#xff0c;加密方案的目的在于…...

win11 vscode torch 编译遇错

1. 错误内容&#xff1a; Failed to build pc-util ERROR: Could not build wheels for pc-util, which is required to install pyproject.toml-based projects NativeCommandExitException: Program “pip.exe” ended with non-zero exit code: 2.问题分析&#xff1a; pip出…...

Markdown系列之Flowchat流程图

一.欢迎来到我的酒馆 介绍Markdown的Flowchart流程图语法。 目录 一.欢迎来到我的酒馆二.什么是Flowchart三.更进一步 二.什么是Flowchart 2.1 Flowchart是一款基于javascript的工具&#xff0c;使用它可以用代码创建简单的流程图。具体信息可以查看flowchart官网&#xff1a;…...

小程序wx:else提示 Bad attr `wx

问题&#xff1a;以下wx:for里的wx:if &#xff0c; wx:else 会报这个错&#xff1a;Bad attr wx <scroll-view class"scroll1" scroll-x enable-flex"true"><view wx:if"{{playlist.length>0}}" class"item" wx:for"…...

halcon 学习笔记

图像的参数 图形参数 Iconic, 包括 image, region, XLD 1.1 image 图像由一个或者多个通道组成&#xff0c;是大小相同的矩阵&#xff0c;包含各种像素类型的灰度值 在图像显示界面&#xff0c;按ctrl健&#xff0c;可以查看当前的像素值 灰度图 一个通道像素点存放在一个矩…...

vscode 设置滑条颜色

1. 默认的滑条是灰黑色的&#xff0c;很难看的清 2. 左下角&#xff0c;打开VS Code 设置功能 3. 输入命令 workbench color&#xff0c;回车 4. 找到工作台&#xff1a;自定义颜色设置&#xff0c;打开设置文件 setting.json 5. 打开配置文件 6. 添加颜色配置 "workben…...

农业大数据可视化平台,让农业数据更直观展现!

农业大数据可视化平台是指利用大数据技术和可视化工具&#xff0c;对农业领域的数据进行收集、整理、分析和展示的平台。它可以帮助农业从业者更好地理解和利用农业数据&#xff0c;提高农业生产效率和决策水平。 农业大数据可视化平台通常具有以下特点和功能&#xff1a; 数据…...

【沁恒蓝牙mesh】CH58x USB功能开发记录(二)

本文主要介绍基于【沁恒蓝牙mesh】CH58x USB功能, BLE_USB 工程 解析与修改,主要实现 手机app与节点的数据双向通讯 【沁恒蓝牙mesh】CH58x USB功能开发记录(二) 1. BLE_USB 工程1.1 数据转发接口1.2 PC端测试1.3 手机APP端测试1.4 工程修改实现双向通讯1.4.1 【测试原理图…...

go的type关键字

在 Go 语言中&#xff0c;type 关键字用于定义自定义数据类型&#xff08;类型别名、结构体、接口等&#xff09;&#xff0c;以及获取某个变量的类型信息。type 关键字有多种用法&#xff0c;下面将详细解释这些用法&#xff1a; 1. 自定义数据类型 使用 type 关键字可以定义…...

Linux 信号signal处理机制

Signal机制在Linux中是一个非常常用的进程间通信机制&#xff0c;很多人在使用的时候不会考虑该机制是具体如何实现的。signal机制可以被理解成进程的软中断&#xff0c;因此&#xff0c;在实时性方面还是相对比较高的。Linux中signal机制的模型可以采用下图进行描述。 每个进程…...

SpringBoot3之Web编程

标签&#xff1a;Rest.拦截器.swagger.测试; 一、简介 基于web包的依赖&#xff0c;SpringBoot可以快速启动一个web容器&#xff0c;简化项目的开发&#xff1b; 在web开发中又涉及如下几个功能点&#xff1a; 拦截器&#xff1a;可以让接口被访问之前&#xff0c;将请求拦截…...

策略模式(C++)

定义 定义一系列算法&#xff0c;把它们一个个封装起来&#xff0c;并且使它们可互相替换((变化)。该模式使得算法可独立手使用它的客户程序稳定)而变化(扩展&#xff0c;子类化)。 ——《设计模式》GoF 使用场景 在软件构建过程中&#xff0c;某些对象使用的算法可能多种多…...

【每日一题Day290】LC1281整数的各位积和之差 | 模拟

整数的各位积和之差【LC1281】 给你一个整数 n&#xff0c;请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 思路&#xff1a;简单模拟 循环取余&#xff0c;计算「各位数字之积」与「各位数字之和」&#xff0c;最后求差返回 实现 class Solution {public…...

揭示CTGAN的潜力:利用生成AI进行合成数据

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 我们都知道&#xff0c;GAN在生成非结构化合成数据&#xff08;如图像和文本&#xff09;方面越来越受欢迎。然而&#xff0c;在使用GAN生成合成表格数据方面所做的工作很少。合成数据具有许多好处&#x…...

GitHub中readme.md文件的编辑和使用

GitHub中readme.md文件的编辑和使用 | YuuiChungs BlogGitHub - guodongxiaren/README: README文件语法解读&#xff0c;即Github Flavored Markdown语法介绍...

Python 四舍五入到最接近的十位

本篇文章将讨论使用 Python 的 ceil() 函数将数字四舍五入到最接近的十。 Python 整数到最接近的十 Python 具有三个内置函数 round()、floor() 和 ceil()&#xff0c;可用于对数字进行舍入。 ceil() 函数属于数学模块&#xff0c;用于将浮点数舍入为大于或等于给定数字的最接…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...