我们最近将SVN存储库转换为GIT.似乎我们通过此转换丢失了一些提交,并希望验证这一点.
因此,我们希望为每个svn提交找到匹配的git提交,以检查转换是否实际发生.
$ git log|grep "some partial commit message" 这是不够的,因为它只是通过直接的先行者而忽略了不是直接祖先的分支.
$ git show <commit-hash> 不会工作,因为svn没有sha1sums.
我发现的最接近的事情是:$ git reflog show --all --grep="releasenotes"|xargs git show --shortstat然而这似乎并不完全有效,因为它似乎在更多的地方grep而不仅仅是提交消息(我们得到了误报).
我也试过用这个: $ git rev-list --all|xargs -n1 bash -c 'git show|head -n10'|grep -i release
基本上我没有一个很好的方法来打印没有差异的提交消息.
[编辑]
我不完全确定,但我想这应该列出存储库中的所有提交消息.
git rev-list --all|xargs -n1 git log -n1
Run Code Online (Sandbox Code Playgroud) 我想搜索包含字符串"hello world"或在文件中包含该短语的任何提交的提交.
git log -SHello World 不起作用
git log -S'Hello World' 不起作用
git log -S"hello world" 不起作用
我一直在使用:git log -i --grep='hello world'
但这只适用于提交消息.
我想在 git log 中搜索特定字符串以找到它被修改/删除/添加的位置。
我知道我可以使用pickaxe(ie, git log -S"Text")
当我运行此命令时,只显示发生更改的提交的名称。我也试过git log -G"Text"但没有区别。
当我尝试时git log -p -S"Text",它向我展示了两个文件版本之间的完整比较。
有没有办法找出文本被更改/添加/删除的确切位置(行)?
我发现.razmatazz在HTML文件中使用了某个CSS类,但是这个标识符不在任何现有的CSS文件中.这解释了不正确的演示,我已经"踢了一段时间".
> git log -S razmatazz --source --all
847d9d8 Thu Jun 25 10:05:07 2018 Joe C helpful commit message.
9384843 Wed May 20 14:10:34 2018 Joe C ever more helpful commit message.
2093483 Mon Apr 15 11:15:51 2018 Joe C yet another great message.
Run Code Online (Sandbox Code Playgroud)
但同时我一直在合并/取消合并/重命名我的CSS文件,因此我不知道CSS文件名.
如何确定添加或删除给定标识符的文件名?
由于"pickaxe"git选项没有说明是否添加或删除了标识符,我会尝试找到的哈希值和它们的前辈
git show 847d9d8:/path/to/file
git show 847d9d8^:/path/to/file
git show 9384843:/path/to/file
git show 9384843^:/path/to/file
git show 2093483:/path/to/file
git show 2093483^:/path/to/file
Run Code Online (Sandbox Code Playgroud)
以获取丢失的定义.
我向存储库添加了一些代码行并提交了它。然后这些行之后的提交数已被删除。
我有添加行时的提交哈希值以及删除它们的后续提交的哈希值。我怎样才能找到它们被删除的确切提交?
有什么办法可以做类似的事情git log <path>,但是可以使用正则表达式代替路径吗?我想搜索包含文件名与给定模式匹配的文件的提交...
……而我们正在讨论:是否还有一种方法仅对匹配给定模式的文件名执行git status/ git diff?
提前致谢!
编辑:如果有任何方法,我将非常棒,它也适用于Git v1.7.1。
是否有一个简单的 git 命令来列出差异包含给定字符串的文件,或者我是否必须迭代?
我需要与其他更改分开提交重构(方法名称更改),因此我需要确定差异包含新方法名称的文件。
我正在我的 git 存储库中的一个特定分支上工作,并注意到我认为我更改的一段代码。也许更改发生在另一个尚未合并到master的分支上或我正在工作的当前分支上。如何在整个存储库(包括所有分支)中搜索对一个源代码文件的特定更改?
假设我有几次提交,并且我知道它们的修订 ID:
这些提交不是连续的,并且从 git 的角度来看彼此不相关。
如何使用单个命令在列表中输出有关所有这些提交的信息?