파일 목록을 "git add"로 파이프합니다.

파일 목록을 "git add"로 파이프합니다.

새 복제를 수행하고 작업 디렉터리를 복제된 디렉터리에 복사/붙여넣었습니다. 이제 변경된 파일 목록이 표시됩니다.

$ 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.

관련 정보