在git中查找文件发生更改的每个合并/提交

在git中查找文件发生更改的每个合并/提交,git,Git,我有一大堆工作在我们的git存储库中“丢失”。i、 我提交了许多文件,有人在某处进行了合并,“丢失”了我所有的更改。我正在努力确定这是怎么发生的。当我使用以下命令查看文件更改日志时: gitk--all--version.txt 我得到以下截图: 这个文件由我们的构建系统管理,它应该包含字符串 1.0.94.0 至少,根据我在上面截图中看到的情况。但事实上,它实际上包含以下字符串: 1.0.92.0 在挖掘存储库的过程中,有人执行了一次合并,合并覆盖了version.txt,内容为1.0.92

我有一大堆工作在我们的git存储库中“丢失”。i、 我提交了许多文件,有人在某处进行了合并,“丢失”了我所有的更改。我正在努力确定这是怎么发生的。当我使用以下命令查看文件更改日志时:

gitk--all--version.txt

我得到以下截图:

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

1.0.94.0

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

1.0.92.0


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

值得尝试将
--完整历史记录
添加到
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
调用的内容。我发现这里的文档有点混乱,但简而言之,如果没有
--full history
,当父级包含当前格式的文件时,Git将删除一些合并父级

请注意,
--完整历史记录
不包括在选项中,但其中一个选项是
$args
,它至少有时是基于
$vflags($view)
设置的,
$vflags
可能包括
--完整历史记录

如果你直接使用<代码> Git Log,考虑添加< <代码> -完整的历史< /代码>和<代码> -M>代码>。默认情况下,

git log
不会查看合并的差异。
-m
标志使它将每个合并拆分为每个父级的一个提交对(父级-n vs子级),然后查看每个差异


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

你查看过你的ref日志(
git reflog
)了吗?这取决于你知道什么。有帮助吗?还可以看到答案…我对纯git版本非常酷。当我做'git-m--full history version.txt'时,我得到了很多合并(30+),其中version.txt的内容没有改变。我只想要合并,其中version.txt在合并版本中与父版本之一不同。。。。。有没有办法做到这一点?不幸的是,
git log
-c
--cc
)的其他选项使用组合差异,并将跳过子项(合并)与父项匹配的任何合并。
-m
选项用于在
version.txt
与父项之一不匹配的地方进行合并。也就是说,你现在得到了你所要求的,只是许多合并包括了你所要求的,这表明你需要要求一些不同的东西。