git从bash数组中添加多个文件

时间:2014-08-16 14:58:17

标签: git bash

我想将文件名/路径添加到git提交中。我在数组中有文件路径,但是当我提交时,我得到:

fatal: pathspec 'dist/core.js dist/style.css bower.json Source/core.js' did not match any files

我的剧本早些时候有:

DIR=`dirname "$0"`
for file in "${COREFILES[@]}"; do echo $file="$DIR/$file"; done
for file in "${JSONFILES[@]}"; do echo $file="$DIR/$file"; done
TARGET_FILES=$(IFS=$' '; echo "${TARGET_FILES[*]}")
TARGET_FILES=( "${COREFILES[@]}" "${JSONFILES[@]}" )

,错误行为:

sh -c "cd $DIR && git add '$TARGET_FILES' && git commit -qm 'Current tag $TAG$SUFFIX.'"

更改文件中源代码的脚本的其他部分运行良好。当我做echo $TARGET_FILES时,我得到一个字符串,空格分开,看起来一切都好......

任何指针我可能会丢失什么?或者如何做到这一点呢?

1 个答案:

答案 0 :(得分:2)

git add '$TARGET_FILES'

应该是

git add "${TARGET_FILES[@]}"

这条线没有任何作用,可能没什么帮助:

TARGET_FILES=$(IFS=$' '; echo "${TARGET_FILES[*]}")

此外,我认为您不应该使用sh -c

cd "$DIR" && git add "${TARGET_FILES[@]}" && git commit -qm "Current tag $TAG$SUFFIX."

整体而言:

DIR=$(dirname "$0")
for file in "${COREFILES[@]}"; do echo "$file=$DIR/$file"; done
for file in "${JSONFILES[@]}"; do echo "$file=$DIR/$file"; done
TARGET_FILES=( "${COREFILES[@]}" "${JSONFILES[@]}" )
cd "$DIR" && git add "${TARGET_FILES[@]}" && git commit -qm "Current tag $TAG$SUFFIX."