새 복제를 수행하고 작업 디렉터리를 복제된 디렉터리에 복사/붙여넣었습니다. 이제 변경된 파일 목록이 표시됩니다.
$ git status --short | grep -v "??" | cut -d " " -f 3
GNUmakefile
Readme.txt
base32.h
base64.h
...
Git에 추가하려고 하면 오류가 발생합니다(한 번에 1개씩 추가하는 것은 신경쓰지 않습니다).
$ git status --short | grep -v "??" | cut -d " " -f 3 | git add
Nothing specified, nothing added.
Maybe you wanted to say 'git add .'?
다음에 추가 -
:
$ git status --short | grep -v "??" | cut -d " " -f 3 | git add -
fatal: pathspec '-' did not match any files
그리고 --
:
$ git status --short | grep -v "??" | cut -d " " -f 3 | git add --
Nothing specified, nothing added.
Maybe you wanted to say 'git add .'?
사용해 보세요인터렉티브매뉴얼 페이지를 보면 상황이 더욱 혼란스러워지는 것 같습니다.
$ git status --short | grep -v "??" | cut -d " " -f 3 | git add -i
staged unstaged path
1: unchanged +1/-1 GNUmakefile
2: unchanged +11/-11 Readme.txt
...
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
Huh (GNUmakefile)?
What now> *** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
Huh (Readme.txt)?
(나는 Git이 엉망으로 만든 디렉토리를 이미 삭제했기 때문에 고치고 싶지 않습니다.)
파이프로 연결된 파일을 추가하도록 Git에 어떻게 지시합니까?
답변1
git add
파일이 로 파이프되는 대신 매개변수로 나열될 것으로 예상합니다 stdin
.
git status --short | grep -v "??" | cut -d " " -f 3 | xargs git add
또는
for file in $(git status --short | grep -v "??" | cut -d " " -f 3); do
git add $file;
done
답변2
나는 사용했다
git add `cat filelist`
파일이 100개밖에 없어요. 1000초가능한문제가 있습니다.
하지만 그렇지 않을 수도 있습니다. 시험 실행하려면 "-n"을 사용하십시오.
답변3
파일이 이미 색인에 있는 경우(예: "git status"를 실행하면 추적되지 않은 것이 아니라 "수정됨"으로 표시됨) 다음을 실행할 수 있습니다.
git commit -am "Useful commit message here"
그러면 추적되었지만 수정된 모든 파일이 자동으로 추가됩니다.
답변4
David King의 것과 유사합니다.
git status --short | perl -lane '$F[0] == "M" and print $F[1]' | xargs -n 20 git add
이 예에서는 "수정됨" 상태의 파일만 찾아 추가합니다. 매개변수 목록이 너무 길어지는 것을 방지하려면 xargs
이 -n 20
매개변수를 사용하여 git에 대한 각 호출을 20개 파일로 제한하세요.
필요에 따라 Perl 스크립트에서 일치 기준을 변경합니다. 다른 예시:
| perl -lane '$F[0] == "M" and $F[1] =~ m/py$/ and print $F[1]' |
이 예에서는 수정된 Python 파일( 로 끝남)을 찾습니다 py
.