[git] 추적되지 않은 파일 만 추가

Git에서 엄청나게 유용한 명령 중 하나는 git add -u추적되지 않은 파일을 제외한 모든 것을 인덱스에 넣는 것입니다. 그 반대가 있습니까? 지난 몇 달 동안, 나는 대화식으로 색인에 몇 가지 업데이트를 추가 한 위치에서 종종 자신을 발견했으며 커밋하기 전에 추적되지 않은 모든 파일을 해당 색인에 추가하려고합니다.

추적되지 않은 파일 색인에 개별적으로 식별하지 않고 추가 할 수있는 방법이 있습니까? 도움말 문서에 분명한 내용이 없지만 누락 된 것 같습니다.

감사.



답변

로 쉽습니다 git add -i. a“”추적되지 않은 추가 “에 대해 입력 한 다음 *“모두 “에 대한 입력q (종료하기) 당신이 완료됩니다.

단일 명령으로 수행하려면 echo -e "a\n*\nq\n"|git add -i


답변

git ls-files -o --exclude-standard 추적되지 않은 파일을 제공하므로 아래와 같은 작업을 수행하거나 별칭을 추가 할 수 있습니다.

git add $(git ls-files -o --exclude-standard)


답변

정확히 당신이 찾고있는 것이 아니지만, 나는 이것이 매우 도움이된다는 것을 알았습니다.

git add -AN

모든 파일을 색인에 추가하지만 내용은 추가하지 않습니다. 추적 해제 된 파일은 이제 추적 된 것처럼 동작합니다. 내용이에 표시 git diff되고을 (를) 사용하여 대화식으로 추가 할 수 있습니다 git add -p.


답변

~ / .gitconfig 파일에 이것을 추가 할 수 있습니다 :

[alias]
    add-untracked = !"git status --porcelain | awk '/\\?\\?/{ print $2 }' | xargs git add"

그런 다음 명령 행에서 다음을 실행하십시오.

git add-untracked


답변

사람들의 출력 파이프 제안 git ls-files에를 git add하지만,이 같은 공백 또는 글로브 문자가 포함 된 파일 이름이있는 경우 실패 할 것입니다 *.

안전한 방법은 다음을 사용하는 것입니다.

git ls-files -o --exclude-standard -z | xargs -0 git add

여기서 -zgit에게 \0줄 종결 자를 사용하도록 -0지시하고 xargs에게 동일하게 지시합니다. 이 방법의 유일한 단점은 -0옵션이 비표준이므로 일부 버전 만 xargs지원한다는 것입니다.


답변

git ls-files현재 디렉토리의 파일을 나열합니다. 트리의 어느 곳에서나 추적되지 않은 파일을 나열하려면이 방법이 더 좋습니다.

git ls-files -o --exclude-standard $(git rev-parse --show-toplevel)

트리에 추적되지 않은 모든 파일을 추가하려면

git ls-files -o --exclude-standard $(git rev-parse --show-toplevel) | xargs git add


답변

나는 이것을 시도하고 효과가 있었다 :

git stash && git add . && git stash pop

git stash모든 수정 된 추적 파일 만 별도의 스택에 넣은 다음 남은 파일은 추적되지 않은 파일입니다. 그런 다음 git add .필요에 따라 모든 파일을 추적되지 않은 파일로 준비합니다. 결국, 수정하여 모든 수정 된 파일을 스택에서 다시 가져옵니다.git stash pop