首页 > 解决方案 > git - 某些文件不是最新的远程提交

问题描述

我们的 git 存储库似乎“忽略”了我们在一段时间内推送的一些提交。我可以在提交历史记录中看到它们,但是当打开/拉取实际文件时,它似乎是在更早的提交中。

遥控器是我们大学托管的 Gitlab。我和我的队友都没有记得做过任何不寻常的事情,并且在存储库历史中也没有出现任何异常。我们只有一个远程分支(master)。

我上周四提交并推送了提交,然后队友 A 立即从存储库中拉取了我刚刚推送的更改。在那之后,队友 B 推送了几个提交。根据git showGitlab 中显示的历史记录,队友 B 的提交不会影响我之前提交的文件更改。但是,当我和队友 A 在队友 B 的提交之后进行拉取时,文件被之前的提交覆盖了。

例子:

  1. 提交受影响文件之一的历史记录 提交受影响文件之一的历史记录

最新的提交是9c53751e,但是当我们从远程拉取时,我们得到b690a169了。

  1. 同一时间段内同一文件的 git log 输出


commit b690a169b9293d41cd0aa7c0984cc5800aa7dc6b
Author: redacted - author
Date:   Thu Mar 14 00:28:31 2019 +0000

redacted - commit message

commit b8ecd472ce00dd71f7fd182a6fac687e7a1127b8 Author: redacted - author Date: Mon Mar 11 20:41:16 2019 +0000

redacted - commit message

commit 19a93adaa7c8f5cf0bafb9af2ad053cff8113419 Author: redacted - author Date: Sat Feb 23 23:52:06 2019 +0000

redacted - commit message

commit f0f1a60d57e54d1b5148f4c163d26275d947c9e8 Merge: a307998 0d0dd67 Author: redacted - author Date: Sat Feb 23 16:09:35 2019 +0000

:...skipping... commit b690a169b9293d41cd0aa7c0984cc5800aa7dc6b Author: redacted - author Date: Thu Mar 14 00:28:31 2019 +0000

redacted - commit message

commit b8ecd472ce00dd71f7fd182a6fac687e7a1127b8 Author: redacted - author Date: Mon Mar 11 20:41:16 2019 +0000

redacted - commit message

commit 19a93adaa7c8f5cf0bafb9af2ad053cff8113419 Author: redacted - author Date: Sat Feb 23 23:52:06 2019 +0000

redacted - commit message

commit f0f1a60d57e54d1b5148f4c163d26275d947c9e8 Merge: a307998 0d0dd67 Author: redacted - author Date: Sat Feb 23 16:09:35 2019 +0000

redacted - commit message

commit a30799825ca0776513fd62468fca436bcaa04ab7 Author: redacted - author Date: Sat Feb 23 13:17:58 2019 +0000

redacted - commit message

commit 0d0dd67664c63905f3b3a4061a1690a86d5da117 Author: redacted - author Date: Thu Feb 21 12:30:53 2019 +0000

redacted - commit message

commit 280e11a7315e761440f38257cdffdbd79ea77513 Author: redacted - author Date: Sun Feb 17 15:24:04 2019 +0000

redacted - commit message

commit 61bbc6da1e1e22f42df1f9b0141dabdaf3b132e5 Author: redacted - author Date: Sun Feb 17 12:21:38 2019 +0000

redacted - commit message

提交9c53751e不会出现在此文件的 git 日志中的任何位置。但是,我发现一些提交重复出现很有趣(它在从顶部开始的第 4 次提交之后重复)。

  1. 整个存储库的 git 日志

commit f52a9891dce9d1fc04287a0cc036ba7a6abfe490 Merge: 37f2c7a 9c53751 Author: Teammate B Date: Fri Mar 15 12:10:29 2019 +0000

redacted - commit message

commit 37f2c7a2da1c7154edc25542b831cf47e602c779 Author: Teammate B Date: Fri Mar 15 09:52:12 2019 +0000

redacted - commit message

commit 9c53751e8b6edf6222f3dd7117b0ebf3a640bc68 Author: Me Date: Thu Mar 14 21:27:33 2019 +0000

redacted - commit message

commit 1c9eb7142a69e67e5c5459a4366dd125c9a85696 Merge: cb01aa8 669d5d1 Author: redacted - author Date: Thu Mar 14 21:22:58 2019 +0000

redacted - commit message

commit cb01aa82a1a5ab6b311e7cd97a1add29217df2c7 Author: redacted - author Date: Thu Mar 14 21:22:48 2019 +0000

redacted - commit message

commit 669d5d143e4b2f3734f0cdabc98ade0914f6d2ea Author: redacted - author Date: Thu Mar 14 21:02:26 2019 +0000

redacted - commit message

commit 8117b7b68cdb4763728eb93acfc476d2ffc47a3b Author: redacted - author Date: Thu Mar 14 20:52:02 2019 +0000

redacted - commit message

commit ac8429422a1eb5698e772efa0fe7d513cf35d41b Author: redacted - author Date: Thu Mar 14 20:18:13 2019 +0000

redacted - commit message

在这个 git 日志中,两个最新的提交是队友 B 所做的。“丢失的”提交9c53751e确实出现在这里。队友 B 的提交没有影响受9c53751e(使用验证git show f52a9891dce9d1fc04287a0cc036ba7a6abfe490)影响的任何文件,但9c53751e被列为合并父级。

所有在周五提交和推送的提交,然后按预期工作,远程指向最新的提交。这包括受上述问题影响的文件。

我怀疑这是一次合并出错,但奇怪的是在历史记录中找不到任何信息。我可以运行任何其他 git 命令来提供一些解释吗?有什么方法可以在不手动查看每个文件的历史并将其拼接在一起的情况下恢复这些提交?

标签: gitmergeversion-controlgitlab

解决方案


推荐阅读