将修改后的文件列表放入git commit消息中

时间:2019-01-05 06:14:08

标签: bash git shell unix version-control

我正在尝试为我的.gitconfig添加一个别名,该别名将自动将当前存储库中的所有修改文件添加到提交消息中。

我尝试使用git status --porcelaincut处理awk的输出。

我有awk可以工作,但是我确信有更好的解决方案可以产生更好的提交消息。

# in my .gitconfig
g = !git commit --all --message "edited:$(git status --porcelain | awk '{printf \"%s%s\",(NR>1?\",\":\"\"),$2} END{print \"\"}')"
# on the command-line
git commit --all --message "edited:$(git status --porcelain | awk '{printf \"%s%s\",(NR>1?\",\":\"\"),$2} END{print \"\"}')"

git log中,我看到诸如edited:dir1/file1,dir2/file2之类的提交消息。

我想清理代码和/或改进提交消息。

3 个答案:

答案 0 :(得分:4)

该信息已在您的提交中提供。您只需运行git log --stat即可看到它。

我经常使用它,所以我在.gitconfig中为其定义了别名:

[alias]
    ls = log --stat

因此,每当我使用git ls时,我都会得到统计信息输出。

答案 1 :(得分:0)

如果将命令行界面用于git commit(默认行为),则只需取消注释Git已经生成的相关行。搜索带有Changes to be commited的行,在该行下应有表明文件已修改/添加/删除/移动的行。

答案 2 :(得分:0)

我想出了一种完全可以实现我想要的解决方案,但是这很可怕。

这是我的.gitconfig中的样子:

g = "!f() { git commit -am \"$(echo $@)\" && git push; }; f" "$([ -z \"$(git status --porcelain | grep '^\\s\\?A\\s')\" ] || git status --porcelain | grep '^\\s\\?A\\s' | awk 'BEGIN{print \"Added:\"} {printf \"%s%s\",(NR>1?\", \":\"\"), $2} END{print \"\"}')" "$([ -z \"$(git status --porcelain | grep '^\\s\\?C\\s')\" ] || git status --porcelain | grep '^\\s\\?C\\s' | awk 'BEGIN{print \"Copied:\"} {printf \"%s%s\",(NR>1?\", \":\"\"), $2} END{print \"\"}')" "$([ -z \"$(git status --porcelain | grep '^\\s\\?D\\s')\" ] || git status --porcelain | grep '^\\s\\?D\\s' | awk 'BEGIN{print \"Deleted:\"} {printf \"%s%s\",(NR>1?\", \":\"\"), $2} END{print \"\"}')" "$([ -z \"$(git status --porcelain | grep '^\\s\\?M\\s')\" ] || git status --porcelain | grep '^\\s\\?M\\s' | awk 'BEGIN{print \"Modified:\"} {printf \"%s%s\",(NR>1?\", \":\"\"), $2} END{print \"\"}')" "$([ -z \"$(git status --porcelain | grep '^\\s\\?R\\s')\" ] || git status --porcelain | grep '^\\s\\?R\\s' | awk 'BEGIN{print \"Renamed:\"} {printf \"%s%s\",(NR>1?\", \":\"\"), $2} END{print \"\"}')";

对不起,如果我的问题不清楚。

这个想法是我可以在{p>中键入git g

  1. 在跟踪文件中添加更改,
  2. 提交(带有半体面的消息),然后
  3. 推。

示例提交消息:

Added: file1, file2 Deleted: trash, rubbish Modified: work_in_progress