我正在尝试将大量的二进制文件推送到GitHub,并且由于提交规模很大,它总是会失败。
所以我决定编写一个bash脚本,在给定的目录下递归添加和提交每个文件,所以我可以逐个推送它们。
这就是我的尝试:
#!/bin/sh
for FILE in ${PROJECT_DIR}/*
do
echo ${FILE}
git add ${FILE}
git commit -m "initial commit ${FILE}"
done
但是当文件名有空格或unicode字符时,它会失败。
我正在为此寻找一个强大的脚本。
答案 0 :(得分:1)
问题在于git add
命令中缺少适当的引号。不将其括在双引号内,使变量易受shell的Word-Splitting影响,即通过分隔符将字符串拆分为单个字(默认为空格)
shopt -s globstar
for fileToCommit in ${PROJECT_DIR}/**/*; do
test -f "$fileToCommit" || continue
printf "%s\n" "${fileToCommit}"
git add "${fileToCommit}"
git commit -m "initial commit ${fileToCommit}"
done