首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历diff并使用唯一的提交消息逐个提交每个文件。

遍历diff并使用唯一的提交消息逐个提交每个文件。
EN

Stack Overflow用户
提问于 2021-10-29 09:55:01
回答 1查看 151关注 0票数 0

我有一个运行在GitHub操作中的脚本,该脚本从另一个源运行检索,并将这些更改加载到Git分支中,然后遍历已更改的文件列表并将它们添加到提交中,并添加特定的提交消息,例如“自动提交- { xxxx.xml }文件已更改”,其中xxxx.xml是在git diff中获取的文件名。目前,我的脚本刚刚提交--除了我想要更改它,循环遍历每个更改,并在每个更改中添加自己的提交消息。这个是可能的吗?

代码语言:javascript
复制
echo "*************************************************************"
echo "GIT diff:"
echo ""
git diff
echo ""
echo "*************************************************************"

git add --all
git commit -m "Auto-commit - updated Salesforce metadata"

git push

请记住,我是个十足的菜鸟

EN

回答 1

Stack Overflow用户

发布于 2022-10-19 21:10:48

假设您的文件中没有一个包含时髦字符(制表器,尤其是没有换行符),那么您应该可以开始这样做:

  1. 首先,获取文件列表
  2. 重置提交
  3. 添加第一个/下一个文件
  4. 创建新的提交
  5. 转到步骤3。重复,

为了简化脚本编写,需要交换1和2。

shell脚本可能如下所示:

代码语言:javascript
复制
commit=$(git rev-parse HEAD) # remember commit hash
git reset HEAD^ # reset to previous commit
git diff-tree --no-commit-id --name-only -r "$commit" \
| while IFS= read -r path; do
  git add -- "$path"
  git commit -m 'Auto-commit - '"$path"' file was changed'
done

如果您有GNU,则可以组合diff-tree -z | xargs -0来处理这些特殊路径。

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

https://stackoverflow.com/questions/69766935

复制
相关文章

相似问题

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