【问题标题】:Finding every merge/commit in git where a file changed在 git 中查找文件更改的每个合并/提交
【发布时间】:2017-12-07 02:57:51
【问题描述】:

我有一堆工作在我们的 git 存储库中“丢失”了。即我提交了一些文件,并且有人在某处进行了合并,这“丢失”了我所有的更改。我正在努力确定这是如何/在哪里发生的。当我使用来自此question 的此命令查看文件更改日志时:

gitk --all --version.txt

我得到以下截图:

这个文件由我们的构建系统管理,它应该包含字符串,

1.0.94.0

至少,根据我在上面的屏幕截图中看到的情况。但实际上,它实际上包含了字符串:

1.0.92.0

在挖掘存储库时,有人执行了合并,合并用内容 1.0.92.0 覆盖了 version.txt。但是那个合并没有出现在我的 gitk 输出中。有没有办法运行 gitk(或 git)来向我显示修改了我的文件的所有合并和提交?

【问题讨论】:

  • 你查看过你的参考日志(git reflog)吗?
  • 这取决于你知道什么。 this 有帮助吗?另见答案...

标签: git


【解决方案1】:

值得尝试将--full-history 添加到您的gitk 命令中。 gitk 使用这些 gitk 控制的选项运行 git log(有时是 git rev-list):

# Start off a git log process and arrange to read its output
proc start_rev_list {view} {
    global startmsecs commitidx viewcomplete curview

[mass snippage]

    if {$vcanopt($view)} {
        set revs [parseviewrevs $view $vrevs($view)]
        if {$revs eq {}} {
            return 0
        }
        set args [concat $vflags($view) $revs]
    } else {
        set args $vorigargs($view)
    }

    if {[catch {
        set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \
                        --parents --boundary $args "--" $files] r]
    } err]} {
        error_popup "[mc "Error executing git log:"] $err"
        return 0
    }

默认情况下,查看特定文件,即当$files 不为空时,启用git log 调用History Simplification 的内容。我发现这里的文档有些混乱,但简而言之,如果没有 --full-history,当父级包含当前格式的文件时,Git 将修剪一些合并父级。

注意--full-history包含在选项中,但其中之一是$args,至少有时是基于$vflags($view)设置的,而$vflags可能包含@ 987654335@.

如果您直接使用git log,请考虑同时添加--full-history -m。默认情况下,git log 不查看合并的差异。 -m 标志使其将每个合并拆分为每个父级(父级-n vs 子级)的一个提交对,然后查看每个差异。

我不确定这是否或如何影响gitk,因为gitkgit rev-list 做了额外的工作,但也可能需要将-m 添加到gitk 的选项中。

【讨论】:

  • 我对纯 git 版本非常满意。当我执行“git -m --full-history version.txt”时,我得到了很多合并(30+),其中 version.txt 的内容没有改变。我只想要合并版本中 version.txt 与父母之一不同的合并.....有没有办法得到这个?
  • 不幸的是,git log 的其他选项(-c--cc)使用 combined diff 并将跳过子(合并)匹配的任何合并任一父母。 -m 选项可让您在 version.txtone 的父母不匹配的地方合并。也就是说,你现在得到了你想要的东西——只是很多合并都包含了你想要的东西,这表明你需要不同的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
  • 1970-01-01
  • 2020-08-13
  • 2015-02-23
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
相关资源
最近更新 更多