如何解决git repo 中缺少行
我的 git 仓库发生了一些奇怪的事情。
正如您从以下差异中看到的那样,起初我们添加了 console.log(config)
,在下一次提交中我们将其删除,最后我们再次将其删除,因为该行仍然存在于 repo 中。
这怎么可能?也许合并发生了一些奇怪的事情?
commit e28e546f003f4b55cc508e60b8a2c7ba3ad1ffab
Date: Thu Jan 21 14:46:50 2021 +0100
remove console log
diff --git a/lib/config.js b/lib/config.js
index 6f20b32..ba26ac3 100644
--- a/lib/config.js
+++ b/lib/config.js
@@ -293,8 +293,6 @@ for (let c in config) {
config.i18n.supportedLocales = (config.i18n.locales).filter(l => l.iso === locale)
-console.log(config)
-
const exportedConfig = {
config: config,server: {
commit fc05a16cda8cd9f72d73b995af001dd4ef932a70
Merge: 5b1ef6e 86e1a6a
Date: Wed Jan 20 17:53:14 2021 +0000
Merge branch 'development' into 'staging'
Development --> Staging
See merge request !681
commit 86e1a6aaec44c65e89e0507caf463876d9323d86
Date: Wed Jan 20 18:50:03 2021 +0100
Fool GIT
diff --git a/lib/config.js b/lib/config.js
index 29d0c26..ba26ac3 100644
--- a/lib/config.js
+++ b/lib/config.js
@@ -289,6 +289,8 @@ for (let c in config) {
}
}
+/// console.log(config)
+
config.i18n.supportedLocales = (config.i18n.locales).filter(l => l.iso === locale)
const exportedConfig = {
commit fc85ca3069f9d76072a0488cade1477e47844e8d
Date: Wed Jan 20 18:45:17 2021 +0100
Remove console.log()
diff --git a/lib/config.js b/lib/config.js
index f2f295c..29d0c26 100644
--- a/lib/config.js
+++ b/lib/config.js
@@ -291,8 +291,server: {
commit f2d09dc045dd3e536a09929403e067c5c8fb8b62
Date: Wed Jan 20 18:43:39 2021 +0100
Restore console.log()
diff --git a/lib/config.js b/lib/config.js
index 29d0c26..f2f295c 100644
--- a/lib/config.js
+++ b/lib/config.js
@@ -291,6 +291,8 @@ for (let c in config) {
config.i18n.supportedLocales = (config.i18n.locales).filter(l => l.iso === locale)
+console.log(config)
+
const exportedConfig = {
config: config,server: {
解决方法
该行已添加到合并提交中。如果您 checkout
提交并打开 lib/config.js
,您将看到那里的行。
那么为什么差异中没有显示线条?这令人困惑,我会答应你。这是因为 diff
不显示合并提交的差异。
每当它进行 diff 时,git 需要知道哪些提交正在被区分。大多数提交都有一个父级,因此每个提交与其父级之间存在差异。但是,合并提交有多个父项。它应该与哪个不同?有多个选项可供选择,git 并不真正知道如何显示有用的差异,所以它只显示提交消息。
更深入的解释见this excellent answer:
提交不是差异;提交是快照。这似乎是一个没有区别的区别——对于某些提交,它就是。但是对于合并提交,不是。
当git show
(或git log -p
)将提交作为显示为差异时,它是通过将提交的快照与其他内容进行比较来实现的。 git diff
命令做同样的事情:它将一个提交与另一个提交进行比较。 (或者它可以将提交与工作树、索引的内容或其他一些组合进行比较。)
对于普通提交,比较什么是显而易见的:将这个提交的快照与上一个(即父)提交的快照进行比较。所以这就是 git show
的作用(还有 git log -p
):它从父提交到这次提交运行 git diff
。
不过,合并提交并不只有一个父提交。他们有两个父级。1这就是让他们首先“合并提交”的原因:合并提交的定义是至少有两个父级的提交。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。