我当前的默认git日志行运行如下:
git log --graph --date=relative --pretty=format:'%Cblue%h%Creset %Cgreen(%cr)%Creset -%C(yellow)%d%Creset %s' --abbrev-commit -7
Run Code Online (Sandbox Code Playgroud)
然而,有时候,我更喜欢绝对的日期/时间格式,而不是相对格式,所以我尝试了:--date=default而--date=local不是--date=relative甚至--date=..完全省略:结果没有改变.可能它与"log.date配置变量设置log命令的--date选项的默认值有关." , 我不知道.可能我需要重新启动终端(但如果是这种情况我会有点失望......).
简而言之,我想"切换"日期,甚至可以在一个git log实例中使用这两种日期格式.
试图更详细地了解 git。在 git log 的图形输出中,线和点是什么意思?为什么点只在左边的一部分,而在右边的另一部分?是因为我从特定分支运行命令吗?它会是不同的形式大师吗?拉合并是否以不同方式显示?

我一直在修改git某些log命令的别名。我有我想要的大部分东西(信用在这里),但是我在一件事情上遇到了麻烦。当我打电话
git log --graph --format=format:'%h - [%ar] %s%+d'
Run Code Online (Sandbox Code Playgroud)
我得到
* ab123f - [6 hours ago] Fix the references
| (HEAD, origin/master, master)
* bc123f - [8 hours ago] New build syntax
* cd123f - [10 hours ago] Initial import
Run Code Online (Sandbox Code Playgroud)
Where%+d添加一个新行并--decorate在其上放置标签(如果存在)。我想要的是标签与时间戳一致,如下所示:
* ab123f - [6 hours ago] Fix the references
| (HEAD, origin/master, master)
* bc123f - [8 hours ago] New build syntax
* cd123f - [10 hours ago] Initial import …Run Code Online (Sandbox Code Playgroud) 我正在尝试总结我在项目上的工作.问题是我不想在输出中包含测试文件git log --patch.
这些文件位于一个名为的目录中mtest; 但是,该文件夹还包含我想要显示的测试套件代码.测试文件,我想排除,有扩展mscx或xml,所以我想基于该过滤器的工作.
我已经看过使'git log'忽略某些路径的更改,但这看起来像是排除了修改文件而不是简单地排除文件的提交.
有没有办法做到这一点?
我已经尝试了Jubobs的答案,它看起来很有效,但令人惊讶的是,即使有过滤器,也会出现2个文件.
我用这个小存储库复制了这个:
mkdir test
cd test
git init
echo 'readme' > README
git add .
git commit -m "Initial commit"
mkdir test2
cd test2
echo 't1' > test1.cpp
echo 't2' > test2.xml
git add .
git commit -m "c2"
echo 't3' > test3.cpp
echo 't4' > test4.xml
git add .
git commit -m "c3"
Run Code Online (Sandbox Code Playgroud)
我注意到创建目录时不会过滤文件.我尝试了以下命令:
git log --patch -- . ":(exclude)**/*.xml"
Run Code Online (Sandbox Code Playgroud)
这导致包含 …
当我使用时git log --pretty=oneline --shortstat,我得到了我的日志的紧凑表示:
% git log --pretty=oneline --shortstat
73c6eecd930c2f66d5c1e87fcca7ca9b0e356809 doing stuff with things
3 files changed, 134 insertions(+)
65b457d2e0e94e628e1b30204075540524c8a1d2 doing things with stuff
2 files changed, 4 insertions(+), 1 deletion(-)
...
375531279297af3c787855b0848b400f1c40b638 things with stuff doing
1 file changed, 2 insertions(+)
5501964b19815a07b64e1cd391e032147af33b8f with things doing stuff
25 files changed, 6746 insertions(+)
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试使用tformat等效的oneline,我会在stat之前得到一个额外的换行符:
% git log --pretty="%C(yellow)%H%Creset %s" --shortstat
73c6eecd930c2f66d5c1e87fcca7ca9b0e356809 doing stuff with things
3 files changed, 134 insertions(+)
65b457d2e0e94e628e1b30204075540524c8a1d2 doing things with stuff …Run Code Online (Sandbox Code Playgroud) 我想找到引入的提交添加了"TODO"或"FIXME"注释并按日期排序.
我知道这git log -G'TODO|FIXME'将显示包含评论的提交,我可以做类似的事情
git log --format='%ci' -G'TODO|FIXME' | cut -d' ' -f 1
Run Code Online (Sandbox Code Playgroud)
但是,这不会尊重它应该只提交引入这样的评论.
有谁知道我怎么能找到提交此类评论的提交并按日期订购?如果实际的SHA-1包含在该列表中,那将更加令人敬畏.
我需要获取Date并以这种格式提交一组github的结果:
Date Commit
19 Mar 2015 b6959eafe0df6031485509c539e22eaf2780919c
1 Apr 2015 9a1f13339cc7d43930440c2350ea3060b72c8503
1 Apr 2015 1e76036421ca4d72c371182fc494af514911b099
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令获取日期:
git log | grep Date: | awk '{print $4 " " $3 " " $6}'
Run Code Online (Sandbox Code Playgroud)
和提交
git log | grep commit | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)
如何合并命令,以便在同一行中打印两个结果?
这是git日志的示例:
commit 1e76036421ca4d72c371182fc494af514911b099
Author: xxxx
Date: Wed Apr 1 17:35:36 2015 +0200
First web app commit
First web app commit
commit 9a1f13339cc7d43930440c2350ea3060b72c8503
Author: xxxx
Date: Wed Apr 1 17:28:42 2015 +0200
change from app to website
commit b6959eafe0df6031485509c539e22eaf2780919c …Run Code Online (Sandbox Code Playgroud) 使用Git Bash时,我输入命令:
git log
Run Code Online (Sandbox Code Playgroud)
它显示了所有日志.但现在我想做第二个命令.所以我按住向下箭头到达日志的底部,它只是说(END).如何进入下一行,以便输入下一个命令?
我想记录一组特定分支上的所有更改,以查看它们之间的关系,我发现:
git log --graph --oneline --topo-order --decorate --simplify-by-decoration `git branch --list -a origin/foo/*`
Run Code Online (Sandbox Code Playgroud)
完全符合我的要求(即在所有以foo/*为前缀的分支上进行日志更改).
但现在我--branches对git log 的选择感到好奇.这似乎是应该以类似的方式工作,但如果我使用--branches=origin/foo/*或者--branches=remotes/origin/foo*甚至--branches=foo输出是非常不同的(只有极少数的和不相干的提交都会被显示).
文件说:
--branches[=<pattern>]
Pretend as if all the refs in refs/heads are listed on the command line as
<commit>. If <pattern> is given, limit branches to ones matching given shell
glob. If pattern lacks ?, *, or [, /* at the end is implied.
Run Code Online (Sandbox Code Playgroud)
有什么不同 ?我的问题已经解决,因为我可以使用第一个版本 - 但我问这个,因为我很好奇.(如果可以避免使用后蜱,那么添加git别名会稍微简单一些.)
此问题讨论相关主题 - 但我看不到有关我的具体问题的任何信息.
在与Jenkins合作时遇到一些有线问题,
#!/bin/sh
set -x
#initialize environment
export PATH="$HOME/.gem/ruby/2.0.0/bin:$PATH"
export PATH="$HOME/.fastlane/bin:$PATH"
export LC_CTYPE=en_US.UTF-8
cd ~/autobuild/projects/MyAPP
git checkout dev
git reset head --hard
git pull
git shortlog
git log
Run Code Online (Sandbox Code Playgroud)
当我从Jenkins作业运行上面的脚本时,它显示git日志输出正常,但没有git shortlog.问题是什么?MyApp有数百个提交.