首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将提交消息自动附加到正在Git中提交的文件

将提交消息自动附加到正在Git中提交的文件
EN

Stack Overflow用户
提问于 2014-06-07 16:46:52
回答 2查看 1.1K关注 0票数 2

我的目标是维护存储库中每个文件末尾的所有提交历史/消息的日志。我使用commit-msg钩子来获取提交消息,准备它并将其附加到文件中。

但是,我注意到,由于文件在暂存后发生了变化,git状态仍然显示为已修改。这样做的正确方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2014-06-07 17:26:01

虽然我同意Oli Charlesworth的评论,你不应该这样做,但这实际上是可能的。下面是一个简单的提交后钩子,它重写提交,将提交消息附加到文件"changelog“中。

代码语言:javascript
运行
复制
if ! test ${GIT_BYPASS_POST_COMMIT+set}
then
    export GIT_BYPASS_POST_COMMIT=1

    git show --format=%B -s >>changelog
    git add changelog
    git commit --amend -C HEAD
fi

如果你尝试这样做,我希望你很快就会发现,在正常使用git的情况下,它的效果并不好。最简单的例子是,如果您修改了一个提交,那么您将修改已经更改了changelog的提交,因此钩子最终复制了提交消息。

你可以决定是尝试让它工作,还是干脆放弃,但我建议你选择后者。

票数 2
EN

Stack Overflow用户

发布于 2017-02-13 20:40:10

我从@hvd修改了提交后钩子,并能够修改代码以自动将提交消息详细信息添加到签入文件位置。

代码语言:javascript
运行
复制
#!/bin/sh
path="D:/temp.txt"
git diff HEAD~1 --name-only > ${path}
if ! test ${GIT_BYPASS_POST_COMMIT+set}
then
    export GIT_BYPASS_POST_COMMIT=1
    for line in `cat $path`; do
        if [[ ! $line =~ version.txt ]];then
            file_path=`dirname $line`
            git show --format=%B -s | cut -d '#' -f2 > ${file_path}/version.txt
            echo " - " >> ${file_path}/version.txt
            echo $line >> ${file_path}/version.txt
            git add ${file_path}/version.txt
        fi  
    done    
    git commit --amend -C HEAD
fi

最初,它将捕获提交过程中更改的所有文件,并将其保存到一个文件中。现在,这将读取文件列表中除version.txt文件之外的每个文件,并添加包含*"commit message - file name"*的version.txt,它将再次提交最后一次提交。

注意:如果对特定目录进行了更改,则这些目录将添加一个版本文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24095474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档