GIT - 从上次拉取中获取提交信息和差异
GIT - Get commit messages and diff from last pull
我有一个包含 GIT 个子模块的项目。我想将该子模块中的更改收集到一个文本文件中,并将该文本文件发送到 Jenkins 电子邮件模板。
现在,我有这个命令,它让我在那个子模块中更改了文件:
git diff origin/master --stat >> fullLog.txt
生成的文件如下所示
test.cs | 8 +++++++-
test1.cs | 3 ++-
2 files changed, 9 insertions(+), 2 deletions(-)
理想情况下,我想要我们刚刚提取的提交消息,但查看 git-log 文档我必须知道要限制哪个提交。现在,当我这样做时 git log -p
我收到了自项目开始以来的每条消息。
我想要的最终结果是这样的:
Commit a2a4cd6a72892d7a6f0f6e2097d8bf13826a56c3 by jsmith
test-111: clears cache
Commit c58a86c8ebc7153d65c0bfdf0d8e5f92be571b9f by psmith
test-112: Changed setting
test.cs | 8 +++++++-
test1.cs | 3 ++-
2 files changed, 9 insertions(+), 2 deletions(-)
如果你知道你刚刚拉取并且拉取实际上有新的提交,那么你可以使用 reflog 来找出你的 HEAD 在拉取之前的状态,并将其用作 git日志。在最后一次更新 HEAD 之前 HEAD 的状态是 HEAD@{1}
,所以这可能有效:
git log HEAD@{1}.. --stat
您可以 运行 git reflog
查看 reflog 本身。请注意,如果 git pull
没有为签出的分支引入任何新提交,则不会更新 reflog。
我假设您是 运行 脚本中的这个,因此不管是否有更改被拉取,都可以使用的解决方案是在拉取之前保存 origin/master
的先前状态。
prev_master=`git rev-parse origin/master`
git pull
new_master=`git rev-parse origin/master`
if [[ $prev_master == $new_master ]]; then
#nothing pulled
else
git log $prev_master..$new_master --stat
fi
并且如果您想要全局文件统计信息但要逐个提交日志,您可以使用这两个命令而不是单个 git log
行:
git log $prev_master..$new_master
git diff --stat $prev_master..$new_master
我有一个包含 GIT 个子模块的项目。我想将该子模块中的更改收集到一个文本文件中,并将该文本文件发送到 Jenkins 电子邮件模板。
现在,我有这个命令,它让我在那个子模块中更改了文件:
git diff origin/master --stat >> fullLog.txt
生成的文件如下所示
test.cs | 8 +++++++-
test1.cs | 3 ++-
2 files changed, 9 insertions(+), 2 deletions(-)
理想情况下,我想要我们刚刚提取的提交消息,但查看 git-log 文档我必须知道要限制哪个提交。现在,当我这样做时 git log -p
我收到了自项目开始以来的每条消息。
我想要的最终结果是这样的:
Commit a2a4cd6a72892d7a6f0f6e2097d8bf13826a56c3 by jsmith
test-111: clears cache
Commit c58a86c8ebc7153d65c0bfdf0d8e5f92be571b9f by psmith
test-112: Changed setting
test.cs | 8 +++++++-
test1.cs | 3 ++-
2 files changed, 9 insertions(+), 2 deletions(-)
如果你知道你刚刚拉取并且拉取实际上有新的提交,那么你可以使用 reflog 来找出你的 HEAD 在拉取之前的状态,并将其用作 git日志。在最后一次更新 HEAD 之前 HEAD 的状态是 HEAD@{1}
,所以这可能有效:
git log HEAD@{1}.. --stat
您可以 运行 git reflog
查看 reflog 本身。请注意,如果 git pull
没有为签出的分支引入任何新提交,则不会更新 reflog。
我假设您是 运行 脚本中的这个,因此不管是否有更改被拉取,都可以使用的解决方案是在拉取之前保存 origin/master
的先前状态。
prev_master=`git rev-parse origin/master`
git pull
new_master=`git rev-parse origin/master`
if [[ $prev_master == $new_master ]]; then
#nothing pulled
else
git log $prev_master..$new_master --stat
fi
并且如果您想要全局文件统计信息但要逐个提交日志,您可以使用这两个命令而不是单个 git log
行:
git log $prev_master..$new_master
git diff --stat $prev_master..$new_master