1

git pullたくさんのフォルダーで実行しようとしています。これは私がこれまでに得たものです:

find . -type d -name .git \
| xargs -n 1 dirname \
| while read line; do cd $line && git pull; done

問題は、それcdが機能しないことです。大量のエラーが発生します。

sh: cd: ./project_one: No such file or directory
sh: cd: ./project_two: No such file or directory
...

しかし、私がやるcd ./project_oneとうまくいきます。どうしたの?何か案は?

4

2 に答える 2

2

cdメインプロセスが適切なディレクトリに残るように、サブシェルで以降の操作を実行します。

... | while read line; do ( cd $line && git pull ); done
于 2012-11-07T06:25:44.547 に答える
1

相対ファイルパスと絶対ファイルパスの指定の問題のようです。.スクリプトの " find . type -d -name .git ..." 部分を に変更し$(pwd)、ディレクトリ名を while ループへの絶対パスとして渡す必要があります。

find $(pwd) -type d -name .git \
| xargs -n 1 dirname \
| while read line; do cd $line && git pull; done

それを試してみてください。うまくいくはずです=)

于 2012-11-07T06:13:39.833 に答える