1
1
摆弄策略选项参数进行重命名检测。这取决于你的Git年份
请记住,cherry picking是作为merge实现的,merge base是cherry picking的commit的父级
吉特从不 记录 例如,考虑典型的 Spot the Difference puzzle . 给你两张照片,让你找出不同的地方。如果左边的图片是“before”,右边的图片是“after”,一把椅子不见了,你会说“椅子被拿走了”。如果不同的椅子出现在不同的位置,您可能会说“一把椅子被移除,另一把被添加”。但是如果这两张椅子看起来是一样的呢 一样吗? 你可以说:椅子A被移除,椅子B被添加,就像你在两张椅子看起来非常不同时所做的那样。或者,你可以说椅子 移动 定位 B! 不管怎样,Git的快照就像照片一样。它们不包含任何 运动 比较 快照,即使有人是Git本身。你告诉Git: 对我来说,比较快照A和快照B。 Git将文件报告为 移动 如果A中的一个名称丢失了,而B中的另一个名称下出现了完全相同的内容, 你已经告诉Git:“检查东西,看看它们是否也移动了。”
Git会认为“移动的文件”是 相同的 如果文件符合 重命名候选队列 . 最好的 找到最佳配对后,这两个文件将从重命名候选队列中删除。这两个文件现在 ,或者在我们的椅子类比中,在左边和右边的图片中是“同一把椅子”,只是移动了一下,可能在这个过程中刮了一点。 我称之为确定文件身份的过程。 从哲学上讲,这是Git对 the Ship of Theseus ,或者更非正式地说 Grandfather's Axe paradox . "这是我祖父的斧头。我父亲换了把手,我换了头,但还是那把斧头!”两个文件是 相同的 一旦他们被确认为这样的人,就立即归档。
为了提高速度,Git默认将提交L和R中的任意两个文件配对为“相同”,如果它们具有完全相同的名称。与
那是关于
我们一会儿就知道原因了,但是我们来谈谈
当我们把它画成一幅犯罪的图画时,这一切都很有意义。每次提交都会记住它的 CommitCommits在这个特定commits之前的commits,我们可以从左到右绘制commits,较旧的commits在左边,较新的commits在右边,如下所示:
假设Alice和Bob都从一个公共源库开始
现在,爱丽丝做了一些工作,做出了一两个新的承诺。她的提交将获得新的、唯一的哈希ID,其他任何人都不会在其他任何地方使用它:
同时,Bob做了一些工作并进行了一两次新的提交,他的提交得到了新的、唯一的哈希ID,其他任何人都不会在其他任何地方使用:
一旦我们得到
全部的
将提交到一个公共存储库中,我们有两个
公共启动提交
,原版
我们可以这样做,无论我们是爱丽丝,鲍勃,或一些第三人称卡罗尔,只要我们有
姓名
这是我用的
很明显,爱丽丝和鲍勃都是从“承诺”开始的
注意
不管怎样,吉特
联合收割机
那是在我们现在的委员会之后,这两个分支中的谁
当你跑的时候
1
樱桃采摘(终于!)
当你使用
名字
Git现在要做的是运行一个合并,就像我们运行
看什么 我们 changedGit将尝试保留这些更改!然后:
他们
Git现在将合并这些更改,就像任何合并时一样,可能会发生合并冲突。正如你现在所看到的
|
charleslcso · 从开源克隆并推送到我的GitHub[重复] 1 年前 |
Itachi · 无法为python项目安装“DAWG”包 1 年前 |
Igor · git重置已删除目录上的头 2 年前 |
Robo · 撤消删除Git中被忽略的文件 2 年前 |
Ali EXE · 如何根据bat中命令的输出设置变量? 2 年前 |
ShortArrow · 如何使用git管理链接源文件? 2 年前 |
Siggi · 使用git移动文件时丢失历史记录 2 年前 |