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