추적되지 않은 파일 만 추가


168

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

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

감사.


1
"추적되지 않은 파일을 제외한 모든 파일을 색인에 넣습니다"와 관련하여 .gitignore특별히 설계된 목적은 아닙니다 git add -u.
Pacerier

또한 현재 추적 된 모든 파일을 제거하면서 추적되지 않은 파일을 추가하도록 요청하고 있습니까? 아니면 현재 추적 된 파일 위에 추적되지 않은 파일을 추가하도록 요청하고 있습니까?
Pacerier

답변:


236

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

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


4
나는 대화식이 적고 좋았지 만 파일 단위보다 확실히 낫습니다. :-)
Rob Wilkerson

34
echo -e "a\n*\nq\n"|git add -i
Mat

@ 매트 감사합니다 완전한 명령입니다 ----> git add -ia * q ??
BKSpurgeon

Argument list too long... 너무 가까이!
Simeon

1
나를 위해 자식 2.21.0 IS로했다 git add -i후, 4다음의 비 추적 추가 *한 후 모든 q종료
해리 B

36

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

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

1
alias gau = "git ls-files -o --exclude-standard | xargs -i git add '{}'"는 저에게 효과적입니다
Stephan

git ls-files --help는 매우 유용한 읽기입니다 : -o, --others Show other (i.e. untracked) files in the output
Joshua Kunzmann

15

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

git add -AN

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


이것은 내가 찾던 것입니다- git commit -p새 파일을 통해 걸을 수 있습니다.
nitsujri

11

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

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

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

git add-untracked

나는이 접근법을 좋아하지만 파일 이름의 공백을 처리하지 않습니다.
Paul Coccoli

9

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

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

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

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


6

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

6

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

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

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


0

추적 할 수없는 수천 개의 파일이 git add -i있으면 추가하지 않아도 작동하지 않습니다 *. 를 나타내는 오류가 발생 Argument list too long합니다.

그런 다음 Windows에도 있고 (# 2 :-묻지 않음) 추적되지 않은 모든 파일을 추가하기 위해 PowerShell을 사용해야하는 경우이 명령을 사용할 수 있습니다.

git ls-files -o --exclude-standard | select | foreach { git add $_ }

보다 git ls-files -o --exclude-standard | % { git add $_ }
간결한

0

여기에 좋은 팁이 많이 있지만 Powershell 내부에서는 작동하지 않습니다.

저는 .NET 개발자이며 .Net 코어 및 크로스 플랫폼을 많이 사용하지 않았기 때문에 주로 여전히 Windows OS를 사용하므로 Git과 함께 일상적으로 사용하는 것은 Windows 환경에서 사용되며 셸이 더 자주 사용됩니다. Git bash가 아닙니다.

추적되지 않은 파일을 Git 리포지토리에 추가하기위한 별칭 기능을 만들기 위해 다음 절차를 따를 수 있습니다.

Powershell의 $ profile 파일 내부 (없는 경우-다음을 실행할 수 있음 : New-Item $ Profile)

메모장 $ 프로필

이제이 Powershell 방법을 추가하십시오.

function AddUntracked-Git() {
 &git ls-files -o --exclude-standard | select | foreach { git add $_ }
}

$ profile 파일을 저장하고 Powershell에 다시로드하십시오. 그런 다음 $ profile 파일을 다음과 같이 다시로드하십시오. $ 프로필

이것은 * nix 환경 IMHO의 소스 명령과 유사합니다.

따라서 다음에 Git repo에 대해 Windows에서 Powershell을 사용하는 개발자이고 추적되지 않은 파일 만 포함하려는 경우 다음을 실행할 수 있습니다.

Untracked-Git 추가

이것은 동사 명사를 사용하는 Powershell 규칙을 따릅니다.


0

git add. (이 디렉토리의 모든 파일을 추가하십시오)

git add -all (모든 디렉토리에 모든 파일 추가)

git add -N은 나중에 어느 것을 나열하는 데 도움이 될 수 있습니다 ....


git add -u비 추적하지 수정 된 파일을 추가합니다
Tarasovych

-3

추적되지 않은 모든 파일을 추가하려면 git 명령이

자식 추가 -A

또한 사용 가능한 다양한 옵션에 대한 자세한 내용을 보려면 command를 입력하십시오.

자식 추가 -i

첫 번째 명령 대신 다음과 같이 추적되지 않은 모든 파일을 추가하는 옵션을 포함한 추가 옵션이 제공됩니다.

$ git add -i 경고 : LF는 README.txt에서 CRLF로 대체됩니다. 파일은 작업 디렉토리에 원래 줄 끝이 있습니다. 경고 : LF는 package.json에서 CRLF로 대체됩니다.

* 명령 * 1 : 상태 2 : 업데이트 3 : 되돌리기 4 : 추적되지 않은 추가 5 : 패치 6 : diff 7 : 종료 8 : 도움말 지금>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.