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

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

# Git,git 额外说明

收录于:23天前

向下同步

对于远程仓库项目,初始化一个配置文件,配置远程仓库及相关信息,分配远程仓库地址,使用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 笔记

. . .

相关推荐

额外说明

Docker挂载卷错误:无法在容器中访问主机文件

Docker挂载卷错误:无法在容器中访问主机文件 Docker挂载卷错误:无法在容器中访问主机文件 摘要 引言 正文 为什么要使用挂载卷? 1. 数据持久性 2. 主机与容器之间的数据共享 常见挂载卷错误 1. 无法访问主机文件 解决挂载卷错误 1. 检

额外说明

Word转PDF 并转成base64(亲测可用)

Word转PDF 并转成base64(亲测可用) 摘要: 控制台 实现类 POM Gradle 扩展其他方式 apose 控制台 实现类 POM Gradle 扩展其他方式 apose 博主 默语带您 Go to New World. ✍ 个人主页——

额外说明

sharding-jdbc水平分库与垂直分库

前言 在上一篇中,我们见到介绍了sharding-jdbc的基本概念和使用,了解了其基本原理,在sharding-jdbc中存在水平分库与垂直分库的概念,从业务意义上讲,分库的目的是为了缓解单台服务器查询的压力,但在实践过程中,存在水平分库和垂直分库两种

额外说明

机器学习必修课 - 使用管道 Pipeline

目标:学习使用管道(pipeline)来提高机器学习代码的效率。 1. 运行环境:Google Colab import pandas as pd from sklearn.model_selection import train_test_split

额外说明

HTML5部分新属性的认识

一、HTML5中新增几个全局属性 1、contenteditable是否可支持编辑:true表示可以false表示不可以 2、tabindex值为数字:表示按键盘tab键先切换到哪里 3、hiddlen布尔值,表示隐藏元素,但是会渲染该DOM节点 二、H

额外说明

05. Vuepress1.x CSS 样式覆盖:修改内容宽度

目录 一、原始样式 二、修改 三、其它修改 一、原始样式 可以看见左右两侧的红框是空白的 开发者工具中可以看到页面的 .theme-default-content 限制了最大 width 二、修改 1、.vuepress 文件夹下创建 styles/pa

额外说明

go GC(垃圾回收)

目录 什么是GC go语言中的GC 标记清除法 三色标记法 两种不变式 go对上述规则的两种实现机制: 插入写屏障 删除写屏障 混合写屏障法 总结 什么是GC GC 堆内存上分配的数据对象,不会再使用时,不会自动释放内存,就变成垃圾,在程序的运行过程中,

额外说明

解决Windows系统找不到drvstore.dll文件的问题

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个drvstore.dll文件

额外说明

软件缺少msmapi32.ocx无法运行问题修复

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个msmapi32.ocx文件进行安装(前提是找到适合的版本),

ads via 小工具