【发布时间】:2021-12-11 16:10:55
【问题描述】:
我想创建一个shell 脚本,将add、commit 和push 新文件或更改文件添加到存储库。目前,我的脚本通过逐个文件迭代来执行此操作,这需要太多时间。我的要求是仍然逐个文件地执行此文件,但这次我只想迭代新的或更改的文件。
我的shell脚本如下:
#!/bin/sh
CUR_DIR=$(pwd)
PROJECT_DIR="${CUR_DIR}"
for fileToCommit in $(find ${PROJECT_DIR}/* -type f);
do
test -f "$fileToCommit" || continue
printf "%s\n" "${fileToCommit}"
git add "${fileToCommit}"
git commit -a -m "[ADD] New ${fileToCommit##*/} File"
git push
done
我怎样才能毫不费力地做到这一点?
【问题讨论】:
-
为什么要一个文件一个文件?无论如何,即使每次提交一个文件的奇怪要求,您至少可以让推送线脱离循环。仍然会很长,但要快得多。
-
由于 GitHub 的限制。由于我的项目使用的是小尺寸,但每个存储库有大量文件,我需要一个文件
commit。因此,我需要逐个文件进行。 -
不确定,如果将其缩放为多个文件,它可能会破坏管道。虽然你是对的,但它可能很危险。事实上,在循环线之外获取
push会使事情变得更快。但是,GitHub 对push指令的大小有限制。 -
我只是在这里建议,如果你正在努力克服一些 GitHub 限制,使用一些代码来自动回避该限制,那么你可能设置当 GitHub 关闭那个特殊的解决方法漏洞时,你自己也要为未来的痛苦做好准备。联系 GitHub 支持并了解他们为什么有一些特殊限制以及您可以做些什么来与他们合作 以克服它更有意义,而不是偷偷摸摸地绕过它......