답변:
이 답변은 Git 버전 1.x 에만 적용됩니다 . Git 버전 2.x의 경우 다른 답변을 참조하십시오.
요약:
git add -A
단 모든 변경 사항을
git add .
삭제하지 않고 새 파일 및 수정 단계
git add -u
새 파일없이 수정 및 삭제 단계
세부 묘사:
git add -A
와 같습니다 git add .; git add -u
.
중요한 점은 git add .
작업 트리를보고 변경되거나 새로 작성되어 무시되지 않은 경우 모든 변경 사항을 준비된 변경에 추가한다는 것입니다. 'rm'작업을 준비하지 않습니다.
git add -u
이미 추적 된 모든 파일을보고 해당 파일이 다르거 나 제거 된 경우 해당 파일의 변경 사항을 준비합니다. 새 파일을 추가하지 않고 이미 추적 된 파일의 변경 사항 만 준비합니다.
git add -A
두 가지를 모두 수행하는 편리한 바로 가기입니다.
이 (망할 놈의 버전에 대한 출력 2.x으로합니다 같은과에서 차이를 테스트 할 수 있습니다 git add .
git status
것입니다 다를 수를)
git init
echo Change me > change-me
echo Delete me > delete-me
git add change-me delete-me
git commit -m initial
echo OK >> change-me
rm delete-me
echo Add me > add-me
git status
# Changed but not updated:
# modified: change-me
# deleted: delete-me
# Untracked files:
# add-me
git add .
git status
# Changes to be committed:
# new file: add-me
# modified: change-me
# Changed but not updated:
# deleted: delete-me
git reset
git add -u
git status
# Changes to be committed:
# modified: change-me
# deleted: delete-me
# Untracked files:
# add-me
git reset
git add -A
git status
# Changes to be committed:
# new file: add-me
# modified: change-me
# deleted: delete-me
git add -A -p
사람이 (비 추적 파일에 대해 대화 형으로 문의) 예상대로 작동하지 않습니다
git add -A :/
나git add -A .
git add -u
이되었다 git add -u :/
후자의 매개 변수, 경로가되는 특정 디렉토리를 -u 할 수 있도록하여, :/
전체 트리를 처리합니다.
git add -u
또는 git add .
그것도 더 동기화 문제가있어 없는지 확인하기 위해 추가 여분의 정신 세금에 대한 회계 후 쉽게 자신의 인생을 만드는 것을 수행하여이? 힘내하지 더 furthur 분할 않는 이유를 궁금해 add -u
두 개의 명령어로 add -u1
및 add-u2
파일에 대한함으로써 하나 개의 작품이 아닌 숫자로 시작하는 파일을 다른 숫자로 시작하고
다음은 빠른 이해를위한 표입니다.
힘내 버전 1.x :
힘내 버전 2.x :
장문 플래그 :
git add -A
에 해당 git add --all
git add -u
에 해당 git add --update
더 읽을 거리 :
git add .
현재 경로에있는 새 파일 만 추가 하므로 이는 사실이 아닙니다 . 새 디렉토리가있는 경우 즉 ../foo
, git add -A
그것을 무대 것입니다 git add .
하지 않습니다.
git add .
동등에 git add -A .
동등하다,git add "*"
함께 힘내 2.0, git add -A
기본값은 다음과 git add .
같음git add -A .
.
git add <path>
"git add -A <path>
"는 이제 " " 와 동일하므로 " "git add dir/
는 디렉토리에서 제거한 경로를 확인하고 제거를 기록합니다.
이전 버전의 Git에서는 "git add <path>
"이 (가) 제거를 무시했습니다.원하는 경우 "
git add --ignore-removal <path>
" 라고 말하면 추가 또는 수정 된 경로 만 추가 할 수 있습니다<path>
.
git add -A
git add :/
( git repo 폴더에서 모든 것을 추가하십시오 )와 같습니다 .
git 2.7 (2015 년 11 월)을 사용하면 " :
" 라는 폴더를 추가 할 수 있습니다 !
참조 29abb33 커밋 에 의해 (2015년 10월 25일)를 Junio C 하마노 ( gitster
) .
참고 그 자식 2.0 (Q1 또는 Q2 2014) 시작 에 대해 이야기 할 때, git add .
(작업 트리에서 현재 경로), 당신은 '사용해야합니다 .
다른에' git add
뿐만 아니라 명령.
그 의미는:
"
git add -A .
"동등 "git add .; git add -u .
"
( 및에 .
대한 추가 ' ' 참고 )git add -A
git add -u
현재 경로뿐만 아니라 전체 작업 트리 에서 git add -A
또는 git add -u
작동 하기 때문에 (git 2.0 만 시작) .
이러한 명령은 Git 2.0의 전체 트리에서 작동하여 "
git commit -a
"및 기타 명령과 일관성을 유지 합니다 . "git add -u
" 을 " "처럼 동작 하게 만드는 메커니즘이 없기 때문에git add -u .
, "git add -u
"(pathspec없이) 현재 하위 디렉토리의 경로에 대해서만 색인을 업데이트하여 ""라고 명시 적으로 말하기 위해 손가락 훈련을 시작 하는 것이 중요합니다.git add -u .
"Git 2.0이 나오기 전에 의미가있을 때.이러한 명령이 pathspec없이 실행될 때와 현재 디렉토리 외부에서 로컬 변경이있을 때 경고가 발생합니다 . Git 2.0의 동작은 이러한 상황에서 오늘 버전과 다르기 때문입니다.
에서 찰스 지침 을 다음과 같이 될 것이다 나의 제안 이해를 테스트 한 후 :
# For the next commit
$ git add . # Add only files created/modified to the index and not those deleted
$ git add -u # Add only files deleted/modified to the index and not those created
$ git add -A # Do both operations at once, add to all files to the index
이 블로그 게시물은 이러한 명령이 적용될 수있는 상황을 이해하는 데 도움이 될 수 있습니다 . Git 작업 디렉토리에서 삭제 된 파일 제거 .
Git 2.0 ( 2014-05-28 )으로 변경된 사항 :
-A
이제 기본값입니다--ignore-removal
.git add -u
및 git add -A
명령 행에서 경로없이 하위 디렉토리에 전체 트리에서 작동합니다.따라서 Git 2의 대답은 다음과 같습니다.
git add .
그리고 git add -A .
현재 디렉토리에 새 / 수정 / 삭제 된 파일을 추가git add --ignore-removal .
현재 디렉토리에 새로운 / 수정 된 파일을 추가합니다git add -u .
현재 디렉토리에 수정 / 삭제 된 파일을 추가합니다더 증류 된 빠른 답변 :
git add -A
git add .
git add -u
git add :/
+git add -u :/
이것이 더 명확해질 수 있기를 바랍니다.
!The syntax is
git add <limiters> <pathspec>
! Aka
git add (nil/-u/-A) (nil/./pathspec)
리미터는 -u 또는 -A 또는 nil 일 수 있습니다.
Pathspec은 파일 경로 또는 점 '.'일 수 있습니다. 현재 디렉토리를 나타냅니다.
Git이 어떻게 추가되는지에 대한 중요한 배경 지식 :
-A
또한 지정 하지 않으면 (점) 또는 현재 디렉토리는 재귀 적이 지 않습니다 . 도트는 현재 디렉토리를 엄격하게 참조합니다. 위와 아래에있는 경로는 생략되어 있습니다.이제 그 지식이 주어지면 위의 답변을 적용 할 수 있습니다.
리미터는 다음과 같습니다.
-u
= --update
= 추적 된 파일의 하위 집합 => 추가 = 아니요; 변화 = 예; 삭제 = 예. 항목을 추적하는 경우 =>-A
= --all
(그러한 -a
= 수퍼 모든 비 추적 / 추적 파일 힘내되지 않는 이상 2.0 전에 도트 스펙이 제공되는 경우, 특정 폴더 고려한 것만 상기 구문 오류를 범하지 않는). => 경우 항목이 인식되고, git add -A
그것을 발견하고 그것을 추가 할 것입니다.경로 사양은 다음과 같습니다.
git add -A .
git add -u .
결론적으로, 나의 정책은 :
git status
..gitignore
일반적으로 관심있는 파일 만 추적 및 / 또는 인식되지 않도록 좋은 파일을 확보하십시오.모두 git add .
와 git add -A
망할 놈의 최신 버전에서 모든 새로운, 수정 및 삭제 된 파일을 무대 것입니다.
차이점은 git add -A
작업중인 Git 저장소에 속하는 "높은, 현재 및 서브 디렉토리"의 파일 을 스테이지한다는 점입니다. 그러나 git add .
현재 디렉토리와 그 다음의 서브 디렉토리에서만 파일을 준비합니다 ( 높은 디렉토리 외부에있는 파일이 아님 ).
예를 들면 다음과 같습니다.
/my-repo
.git/
subfolder/
nested-file.txt
rootfile.txt
현재 작업 디렉토리 인 경우 /my-repo
, 그리고 당신이 rm rootfile.txt
, 다음 cd subfolder
, 다음 git add .
, 그것은 것입니다 하지 삭제 된 파일을 무대. 그러나 git add -A
어디에서 명령을 수행하든 관계없이이 변경 사항을 단계적으로 수행 할 수 있습니다.
이 -A
옵션은 작업 트리와 일치하도록 색인 항목을 추가, 수정 및 제거합니다.
힘내 2에서 -A
옵션이 이제 기본값입니다.
Git 설명서에.
따라 현재의 디렉토리로 업데이트 범위를 제한하는가 추가 되면
<pathspec>
-A 옵션을 사용할 때 아무 것도 지정 하지 않으면 전체 작업 트리의 모든 파일이 업데이트됩니다 (이전 버전의 Git은 현재 디렉토리 및 하위 디렉토리로 업데이트를 제한하는 데 사용됨).
내가 추가 할 한 가지는 --interactive
or -p
모드가 사용 git add
되면 update ( -u
) 플래그가 사용 된 것처럼 작동하고 새 파일을 추가하지 않는다는 것입니다.
git add *
?