小工具      在线工具  汉语词典  css  js  c++  java

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

# Git,git 额外说明

收录于:152天前

向下同步

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

git pull [remote_addr]

这部分完成向下同步

同步

向上同步的时候你会遇到很多问题。比较顺利的是添加、提交、推送没有任何障碍。

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> 指的是文件的名称

提交时一般都会提交所有文件,所以 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恢复时是否保留这些内容。

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

在这里插入图片描述

请注意,恢复命令将返回到之前提交的版本。如果只有一个版本,本地文件也会消失。请注意,恢复版本必须大于一个版本。

git rm删除本地仓库的文件

在这里插入图片描述

如果git已经提交了多余的内容或者想删除以前提交的内容,可以使用这个命令。对本地仓库的操作都是级联操作,对本地仓库的操作与缓存区同步。

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

直接删除.idea文件是无效的,因为此时的删除只是删除了工作区,缓存区和本地仓库还在。这次该文件仍在提交的本地存储库中。在编写新代码时,新代码不断地从工作区中 git add ,然后 git commit ,并合并到 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但没有添加的情况。应该是因为commit和add是相关的并且是相同的。另外,删除也会删除文件目录下的文件。

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

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

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

Geek Notes™ - 以简单而深入的方式润色您的 IT 笔记

. . .

相关推荐

额外说明

Windows 10中配置JAVA环境变量(图文教程)

本章教程,简单介绍一下如何在windows10上配置JAVA环境变量。 目录 一、下载JDK 二、安装过程  (1)首先得到一个JDK安装可执行程序  (2) 以管理员方式运行exe  (3) 更改JDK安装目录位置  (4)更改目标文件夹位置  (5)

额外说明

直接安装WSL2并将Ubuntu安装到F盘

1. 勾选这三项,重启 2. 以管理员方式运行powersell wsl --update wsl --shutdown wsl --set-default-version 2 wsl --status 3. 解压缩ubuntu 解压缩Ubunt

额外说明

Explain执行计划字段解释说明---select_type、table、patitions字段说明

1、select_type的类型有哪些 2、select_type的查询类型说明 1、SIMPLE 简单的 select 查询,查询中不包含子查询或者UNION 2、PRIMARY 查询中若包含任何复杂的子部分,最外层查询则被标记为Primary 3、D

额外说明

生成对抗网络(GAN):在图像生成和修复中的应用

文章目录 什么是生成对抗网络(GAN)? GAN在图像生成中的应用 图像生成 风格迁移 GAN在图像修复中的应用 图像修复 拓展应用领域 总结 -欢迎来到AIGC人工智能专栏~生成对抗网络(GAN):在图像生成和修复中的应用 ☆* o(≧▽≦)o *☆嗨

额外说明

练习题 - Java编程案例

当用户在Java程序中输入字符时,我们可以通过代码对这些字符进行判断和处理。在这篇博客中,我们将介绍如何使用Java编写一个程序,根据用户输入的字符进行判断,并进行相应的输出。 首先,让我们来看看如何判断一个字符是否为元音字母(a、e、i、o、u)。我们

额外说明

每日一练之斐波那契的实现

每日一练值斐波那契的实现 斐波那契数列是什么? 斐波那契数列的数学关系(包含示意图) 斐波那契数列问题解法: 解法一 递归法: 解法二 循环(迭代)实现 总结: 大家好,我是晓星航。今天为大家带来的是斐波那契数列题型的讲解!(Java版本)- 斐波那契数

额外说明

eclipse中console脱离主窗口后拖回主窗口方式,非reset方式。

前几天遇到这个问题 ,网上大多数都是叫我们重置设置。但是直接拖回就行。

额外说明

李开复【 科学家创业的优势和短板】

一、科学家创业的优势和短板 精益创业之父Steve Blank曾培训了500个科学家团队,辅导了261个成型创业项目,但总共只融资了4 900万美元。他总结了导致这个结果的一个很重要的原因—很多科学家往往很不愿意承认自己不具备把技术商业化的洞察力与能力。

额外说明

YoloV8改进策略:复现HIC-YOLOv5,打造HIC-YOLOv8,用于小物体检测

文章目录 摘要 论文《HIC-YOLOv5:改进的YOLOv5,用于小物体检测》 1、简介 2、相关工作 3、方法 4、实验结果 5、结论 Yolov8官方结果 CBAM注意力机制 Involution内卷 安装mmcv库 改进一:使用CBAM、Invo

额外说明

完美解决Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource的问题

文章目录 1. 复现问题 2. 分析问题 3. 解决问题 4. 总结问题 1. 复现问题 今天在启动项目时,遇到如下问题: *************************** APPLICATION FAILED TO START *********

ads via 小工具