首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >对于Git来说,相同的提交散列值意味着相同的存储库,这是绝对正确的吗?

对于Git来说,相同的提交散列值意味着相同的存储库,这是绝对正确的吗?
EN

Stack Overflow用户
提问于 2021-05-25 17:15:26
回答 2查看 237关注 0票数 0

如果我没弄错的话,每次提交都会有一个SHA-1校验和。为了生成这样的散列值,Git还将前一次提交作为散列函数的输入。也就是说,除了哈希值冲突(无论是意外还是攻击),假设我看到两个存储库的最后一次提交具有相同的哈希值,我可以确信这两个存储库是完全相同的。

这种理解是正确的吗?

EN

回答 2

Stack Overflow用户

发布于 2021-05-25 17:21:11

由于SHA1的冲突如此之小,以至于我们忽略了它,我们可以将其视为它所代表的内容的唯一标识符。因此,如果来自不同repos的2个提交具有相同的SHA1,则这些提交是相同的,并且它们的历史记录是相同的。但这并不意味着这些repos具有相同的提交列表。

顺便说一句,这个特性被GitHub广泛使用:在内部,它们将存储库的所有分支组合成一个大存储库。这样就消除了多余的拷贝。

票数 2
EN

Stack Overflow用户

发布于 2021-05-25 22:46:06

当两个独立存储库中的两个提交具有相同的对象ID时,它们将引用相同的历史记录,包括可从它们访问的所有提交、树和blobs,假设没有发生散列冲突。

请注意,这并不意味着存储库是完全相同的。这两个存储库可能有分支、标记或其他指向不同提交的引用,它们也可能有reflog引用的不同对象集。

请注意,如果您使用的是SHA-1存储库,依赖于没有散列冲突是不安全的。创建SHA-1碰撞的成本是approximately USD 11000,因此任何中型公司或政府机构都可以负担得起创建碰撞的费用。虽然Git有检测冲突对象是否被推送到存储库的措施,但如果存储库是分开的,这将不会有任何影响。如果您需要完整性,则需要使用SHA-256存储库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67692712

复制
相关文章
如何使用.gitignore忽略Git中的文件和目录
通常,在项目上使用Git的工作时,你会希望排除将特定文件或目录推送到远程仓库库中的情况。.gitignore文件可以指定Git应该忽略的未跟踪文件。 在本教程中,我们将说明如何使用.gitignore
入门笔记
2022/06/02
9.3K0
如何在git中删除指定的文件和目录
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/113172.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/07
3.6K0
.gitignore 忽略文件和目录
.gitignore 文件的作用就是告诉 git 哪些文件不需要添加到版本管理中(定义忽略提交的文件)
很酷的站长
2023/01/10
2.8K0
.gitignore 忽略文件和目录
git中忽略指定文件
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/caomage/article/details/82844233
从入门到进错门
2018/10/10
7560
git忽略上传文件git忽略上传文件
第一步 在项目目录新建.gitignore文件 第二步 配置文件 文件名可以使用正则匹配 # Default ignored files # 比如常见的.idea .idea
小小咸鱼YwY
2020/06/19
4.1K0
在 Linux 中永久并安全删除文件和目录的方法
引言 在大多数情况下,我们习惯于使用 Delete 键、垃圾箱或 rm 命令从我们的计算机中删除文件,但这不是永久安全地从硬盘中(或任何存储介质)删除文件的方法。 该文件只是对用户隐藏,它驻留在硬盘上的某个地方。它有可能被数据窃贼、执法取证或其它方式来恢复。 假设文件包含密级或机密内容,例如安全系统的用户名和密码,具有必要知识和技能的攻击者可以轻松地恢复删除文件的副本并访问这些用户凭证(你可以猜测到这种情况的后果)。 在本文中,我们将解释一些命令行工具,用于永久并安全地删除 Linux 中的文件。 1.
小小科
2018/05/04
4.7K0
在 Linux 中永久并安全删除文件和目录的方法
寻找并删除Git记录中的大文件
有时候gitignore没做好,一不小心就又进来一个二进制文件 在重复了N次Google之后,还是记一下吧 首先通过rev-list来找到仓库记录中的大文件: 1 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')" 然后通过filter-branch来重写这些大文件涉及到的所有提交(重写历史记录): 1 g
happy123.me
2018/06/04
3.5K0
如何在Python中删除(删除)文件和目录
本教程说明了如何使用os,pathlib和shutil模块中的功能删除文件和目录。
用户5005176
2021/08/10
13.1K0
在 Linux 中永久并安全删除文件和目录 只需这 3 招
在大多数情况下,我们习惯于使用 Delete 键、垃圾箱或 rm 命令从我们的计算机中删除文件,但这不是永久安全地从硬盘中(或任何存储介质)删除文件的方法。
哲洛不闹
2018/09/14
2.6K0
在 Linux 中永久并安全删除文件和目录 只需这 3 招
git: .gitignore文件 (忽略文件)
Note: 切记目录名后面 一定要加 反斜杠 / ,不然会当成 单文件 处理。
JNingWei
2018/09/27
2.2K0
git: .gitignore文件 (忽略文件)
git全局忽略文件
前阵子做项目时偶然发现自己本地的某个index.js文件无法加入版本库,sourceTree里面一直看不到文件(且项目下面的gitignore文件并没有记录此文件),尝试执行 git add file_name 去手动添加文件。
薛定喵君
2021/05/20
2.1K0
git 忽略 .idea文件
多人开发时,会出现明明在gitignore中忽略了.idea文件夹,但是提交时仍旧会出现.idea内文件变动的情况
韩旭051
2021/05/11
2.7K0
iOS git忽略文件
我的iOS开发时的忽略文件配置 # Xcode *.xccheckout UserInterfaceState.xcuserstate contents.xcworkspacedata build/ *.moved-aside DerivedData *.hmap *.ipa # CocoaPods Pods/ .idea/ *.xcbkptlist
码客说
2019/10/22
1.2K0
android git忽略文件
我的Android开发时的忽略文件配置 #Android generated bin gen gen* #Eclipse .project .classpath .settings #IntelliJ IDEA .idea *.iml *.ipr *.iws out #Maven target release.properties pom.xml.* #Ant build.xml local.properties proguard.cfg #Gradle .gradle build #OSX .
码客说
2019/10/22
9330
git忽略文件追踪
git忽略追踪文件包括两种,一种是未提交到git仓库的文件,一种是已经提交到git仓库中的文件。
党志强
2020/01/23
2K0
Git忽略已经提交过一次文件Git忽略文件
也就是添加之后从来没有提交(commit)过的文件,可以使用.gitignore忽略该文件
iOSDevLog
2020/07/03
2.5K0
文件中查找并删除<feff>
字节顺序标记(英语:byte-order mark,BOM)是位于码点U+FEFF的统一码字符的名称。当以UTF-16或UTF-32来将UCS/统一码字符所组成的字符串编码时,这个字符被用来标示其字节序。它常被用来当做标示文件是以UTF-8、UTF-16或UTF-32编码的记号。 有时候会在处理文本中碰到,需要对其处理,处理方法如下: 删除 :g/[\uFEFF]/d 查找 /[\uFEFF] Python \ufeff
Tyan
2017/12/28
3.3K0
如何删除 Linux 中的空文件和目录?
在 Linux 系统中,有时我们需要删除空的文件和目录。空文件和目录不包含任何内容,它们可能是我们意外创建的或者是不再需要的。本文将详细介绍如何在 Linux 中删除空文件和目录,同时提供多个实际示例,以便您能够轻松地完成这个任务。
网络技术联盟站
2023/08/03
6270
如何删除 Linux 中的空文件和目录?
Git忽略已经提交过一次文件Git忽略文件
1、从未提交过的文件可以用.gitignore 也就是添加之后从来没有提交(commit)过的文件,可以使用.gitignore忽略该文件
超级小可爱
2023/02/23
6300
点击加载更多

相似问题

如何从SVN存储库中删除文件/文件夹并添加到忽略列表

510

从git存储库中删除忽略的文件

12

如何从git存储库中删除*所有*文件和目录?

14

如何从git库中删除被忽略的文件

11

从git中删除和忽略文件,但不要删除所有文件

31
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文