簡體   English   中英

如何在Bash中使用Git遞歸地提交每個文件?

[英]How to Commit For Each File Recursively with Git in Bash?

我正在嘗試將許多大的二進制文件推送到GitHub,但由於提交大小較大,它總是會失敗。

因此,我決定編寫一個bash腳本,該腳本以遞歸方式在給定目錄下添加和提交每個文件,因此可以將它們逐個推送。

這是我嘗試過的:

#!/bin/sh

for FILE in ${PROJECT_DIR}/*
do
    echo ${FILE}
    git add ${FILE}
    git commit -m "initial commit ${FILE}" 
done

但是,當文件名包含空格或Unicode字符時,它將失敗。

我正在為此目的尋找一個健壯的腳本。

問題在於您的git add命令中缺少適當的引號。 如果不將其括在雙引號中,則該變量易於被Shell拆分,即通過定界符將字符串拆分為單個單詞(默認為空格)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM