标签: git-log

如何使用 git log --pretty=format:"...." 获取引用名称?%d 显示参考文献,但全部采用相同颜色

我正在尝试使用 --pretty=format:"...." 获取自定义的 git 日志列表,但似乎无法找出如何将引用名称着色git log --oneline. 到目前为止,这是我的日志命令:

git log --pretty=format:"%C(yellow)%h%Creset %d %ci (%cr)%n    ==> %s%n"
Run Code Online (Sandbox Code Playgroud)

它显示了我想要的所有内容,除了参考的颜色:

在此输入图像描述

有没有办法让参考文献以彩色打印,例如git log --oneline

在此输入图像描述

git git-log

4
推荐指数
1
解决办法
276
查看次数

列出 git 中提交所触及的所有文件

如何列出两次提交之间“触及”的所有文件?我正在寻找一个类似于git diff COMMIT1..COMMIT2 --name-only但包括稍后修改和恢复的文件的命令。

例如,假设我有一个包含一系列提交(线性历史)的存储库:C0<-C1<-C2<-C3<-C4。提交 C1 引入了一个新文件 F,然后提交 C3 将其从存储库中删除。我正在寻找一个命令,给定 C0 和 C4,它会告诉我中间有一个文件 F。即使 C0 和 C4 中没有这样的文件。因此git diff根本不会提及文件F。

git git-diff git-log

4
推荐指数
1
解决办法
406
查看次数

`git log --name-only` 显示共同作者

虽然我在提交消息中添加了 Co-authored-by: ,git log --name-only但只显示一位作者,而不显示其他作者,我怎样才能让 git 显示共同作者呢?

git git-log

4
推荐指数
1
解决办法
378
查看次数

如何在`git log`中的每次提交中显示分支的名称

在Gitk中,显示提交会给出如下输出:

Author: ...
Committer: ...
Parent: ...auth/parser)
Parent: ... (Merge branch '...')
Child:  ...
Branches: remotes/me/foo, foo
Run Code Online (Sandbox Code Playgroud)

有没有办法让这种输出git log?使用git log --graph提供类似的信息,但在我的存储库中使用长期分支,可能需要大量滚动才能找到提交所在的分支.

(类似的问题如何在`git log`中显示分支的名称?)

git git-log git-branch

3
推荐指数
1
解决办法
224
查看次数

使用正则表达式Git日志统计信息

我想在我的git日志上做一些统计数据来得到类似的东西:

10 Daniel Schmidt
5  Peter
1  Klaus
Run Code Online (Sandbox Code Playgroud)

第一列是提交计数,第二列是提交者.我已经达到了这个目的:

    git log --raw |
    grep "^Author: " |
    sort |
    uniq -c |
    sort -nr |
    less -FXRS
Run Code Online (Sandbox Code Playgroud)

有趣的部分是

    grep "^Author: "
Run Code Online (Sandbox Code Playgroud)

我想修改一个漂亮的正则表达式来排除邮件地址.使用Rubular这样的东西http://rubular.com/r/mEzP2hFjGb工作,但如果我将它插入grep(或管道其他的)它将不会得到我正确的输出.

Sidequestion:是否有可能获得计数,而作者在保持这种管道命令样式的同时将其他东西与空白分开?我希望稍后在我们两个列之间有一个更好的分隔符(也许是一些颜色^^)

非常感谢你的帮助!

regex git bash git-log

3
推荐指数
1
解决办法
700
查看次数

忘了使用`--squash`,现在提交历史很乱.我怎样才能收拾这个烂摊子?

我应该为subtree pull --squash 我的项目所依赖的第三方模块执行,但我不小心忘记了--squash.现在我的项目提交历史充斥着第三方模块提交.它们分散在整个日志中.

这个烂摊子需要消失.我如何识别属于第三方模块的所有提交,将它们压缩为一个,然后从项目历史中清除它们,如果可能的话?

更多信息:

请注意,我已经做了几次提交,我打算在操作失败后保留.

git git-rebase git-log git-subtree

3
推荐指数
1
解决办法
675
查看次数

git log revision range提供了不正确的提交范围

我试图使用参数来使用列表中给定范围内的列表所有提交git log.由于某种原因,它似乎没有给我正确的结果(或者我可能理解错误的命令?).

这是我正在做的步骤:

  1. 克隆回购

    git clone https://github.com/openstack/nova.git

  2. 难道git log这些都是过去的9条:

    d5bde44 Merge "Make metadata password routines use Instance object"
    6cbc9ee Merge "Fix object change detection"
    39b7875 Merge "Fix object leak in nova.tests.objects.test_fields.TestObject"
    94d1034 Merge "maint: correct docstring parameter description"
    6407f17 Merge "Fix live_migration method's docstring"
    7406661 Merge "Fix infinitely reschedule instance due to miss retry info"
    9d8a34f Merge "Remove unused code from test_compute_cells"
    429cd4b Fix object change detection
    01381b8 Fix object leak in nova.tests.objects.test_fields.TestObject
    ...
    
    Run Code Online (Sandbox Code Playgroud)
  3. 让我们说我希望从之后开始所有提交01381b8 …

git version-control dvcs git-log git-branch

3
推荐指数
1
解决办法
856
查看次数

Git日志范围修订,包括范围边缘

我知道很多Q / A都解决了这类问题,我已经研究了它们,但实际上我没有找到获取想要的方法。

我正在寻找两个哈希之间的git日志,包括该范围内使用的哈希日志。

从SO中的文档和其他Q / A中,我发现可以通过以下方式实现:

git log oldest...Newest
Run Code Online (Sandbox Code Playgroud)

但这不返回最早的日志。

例如在此仓库https://github.com/galniv/jira-git-helper/commits/master

我希望两者之间的日志52209d3738f80e49c724502503d6a72c1e24e6bc最旧和5456f8cecc5ef5cef5abc1f820a4f044e2153734最新。

git log 52209d3738f80e49c724502503d6a72c1e24e6bc...5456f8cecc5ef5cef5abc1f820a4f044e2153734返回结果仅返回两个日志,而不是3:

commit 5456f8cecc5ef5cef5abc1f820a4f044e2153734
Author: Gal Niv <gal.niv@gmail.com>
Date:   Tue Mar 21 15:33:55 2017 -0400

    Update README.md

commit a4c184ecc7fb4c50705c0ac90c94752a31ce7251
Author: Gal Niv <gal.niv@gmail.com>
Date:   Tue Mar 21 11:48:30 2017 -0400

    Remove console.log, display current branch name
Run Code Online (Sandbox Code Playgroud)

如何包含最旧哈希的日志?

git git-log

3
推荐指数
1
解决办法
721
查看次数

`git log --follow --graph`跳过提交

建立

git version 2.11.0.windows.1
Run Code Online (Sandbox Code Playgroud)

这是一个重现我的测试存储库的bash片段:

git init

# Create a file
echo Hello > a.txt
git add a.txt
git commit -m 'First commit'

# Change it on one branch
git checkout -b feature
echo Hi > a.txt
git commit -am 'Change'

# Rename it on the other
git checkout master
git mv a.txt b.txt
git commit -m 'Move'

# Merge both changes
git merge --no-edit feature
Run Code Online (Sandbox Code Playgroud)

最后,git log --graph --pretty=oneline --abbrev-commit打印:

*   06b5bb7 Merge branch 'feature'
|\
| …
Run Code Online (Sandbox Code Playgroud)

git git-log

3
推荐指数
1
解决办法
494
查看次数

如何显示带有提交编号的git log?

我找到了一个有关如何删除提交示例,但是它包含以下格式的git log

Number  Hash    Commit Message  Author
1   2c6a45b (HEAD) Adding public method to access protected method  Tom
2   ae45fab Updates to database interface   Contractor 1
3   77b9b82 Improving database interface    Contractor 2
4   3c9093c Merged develop branch into master   Tom
5   b3d92c5 Adding new Event CMS Module Paul
6   7feddbb Adding CMS class and files  Tom
7   a809379 Adding project to Git   Tom
Run Code Online (Sandbox Code Playgroud)

当我发出git log命令时,我正在以另一种格式登录并且没有数字(任务需要)。

如何获得git log数字?

git git-log

3
推荐指数
1
解决办法
1137
查看次数