我有一堆工作已经失去了#34;在我们的git存储库中。即我提交了一些文件,有人在某处进行了合并,并且#34;丢失了#34;我所有的改变。我正在努力确定这种情况发生的方式/地点。当我使用此question中的此命令查看我的文件更改日志时:
gitk --all - version.txt
我得到以下屏幕截图:
此文件由我们的构建系统管理,它应包含字符串
1.0.94.0
至少,基于我在上面的截图中看到的内容。但事实上,它实际上包含字符串:
1.0.92.0
在挖掘存储库时,有人执行了合并,并且合并使用内容1.0.92.0覆盖了version.txt。但是这个合并没有出现在我的gitk输出中。有没有办法运行gitk(或git)来显示修改我文件的所有合并和提交?
答案 0 :(得分: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
可能包含--full-history
。
如果您直接使用git log
,请考虑同时添加--full-history
和 -m
。默认情况下,git log
不会查看合并的差异。 -m
标志使它将每个合并拆分为每个父级一个提交对(parent- n vs child),然后查看每个差异。
我不确定这会影响gitk
是否或如何影响gitk
,因为git rev-list
会对-m
执行额外的工作,但可能会添加gitk
也需要$content .= "Position(s) applied for: ";
$content .= implode(',' $_POST['aJob']);
的选项。