GIT-获取提交消息和上次拉取的差异

时间:2019-08-08 13:51:03

标签: git git-diff git-log

我有一个包含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(-)

2 个答案:

答案 0 :(得分:1)

如果您知道自己刚刚被拉出,并且拉出实际上有新的提交,那么您可以使用reflog来找出拉出之前HEAD的正确状态,并将其用作git log的参数。上次更新HEAD之前HEAD的状态为<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" /> <div class="row"> <div class="col-md-6"> <p>Skills:</p> </div> <div class="col-md-6"> <p class="filter" id="filter-2-result"><span class="deselect"></span></p> </div> </div> <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingSkills"> <h4 class="panel-title"> <a role="button" data-toggle="collapse" data-parent="#accordion" href="#skillsCollapse" aria-expanded="true" aria-controls="skillsCollapse"> Skills </a> </h4> </div> <div id="skillsCollapse" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingSkills"> <div class="panel-body"> <label> <input type="checkbox" name="skills" value="Accounting">Accounting</label> <label> <input type="checkbox" name="skills" value="Administration">Administration</label> <label> <input type="checkbox" name="skills" value="Budgeting">Budgeting</label> </div> </div> </div>,因此这可能有效:

HEAD@{1}

您可以运行git log HEAD@{1}.. --stat 来查看引用日志本身。请注意,如果git reflog没有为检出的分支引入任何新的提交,则不会更新reflog。

答案 1 :(得分:0)

我假设您正在脚本中运行此代码,因此不管是否进行了更改都可以使用的解决方案是在提取之前保存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
相关问题