git add [--all|-A]
명령은 git add 와 동일한 것으로 보입니다 git add .
. 이 올바른지? 그렇지 않다면 어떻게 다릅니까?
질문자 :cmcginty
이 답변은 Git 버전 1.x 에만 적용됩니다. Git 버전 2.x의 경우 다른 답변을 참조하세요.
요약:
git add -A
모든 변경 사항을 단계화합니다.git add .
삭제 없이 새 파일과 수정 사항을 준비합니다(현재 디렉터리 및 해당 하위 디렉터리에서).git add -u
새 파일 없이 수정 및 삭제 단계
세부 사항:
git add -A
는 git add 와 동일 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
CB Bailey
힘내 버전 1.x
명령 | 새 파일 | 수정된 파일 | 삭제된 파일 | 설명 |
---|---|---|---|---|
git add -A | ✔️ | ✔️ | ✔️ | 모든(신규, 수정, 삭제) 파일 준비 |
git add . | ✔️ | ✔️ | ❌ | 현재 폴더에서만 새 파일 및 수정된 파일 준비 |
git add -u | ❌ | ✔️ | ✔️ | 수정 및 삭제된 파일만 단계 |
힘내 버전 2.x
명령 | 새 파일 | 수정된 파일 | 삭제된 파일 | 설명 |
---|---|---|---|---|
git add -A | ✔️ | ✔️ | ✔️ | 모든(신규, 수정, 삭제) 파일 준비 |
git add . | ✔️ | ✔️ | ✔️ | 현재 폴더의 모든(새, 수정, 삭제) 파일 준비 |
git add --ignore-removal . | ✔️ | ✔️ | ❌ | 새 파일 및 수정된 파일만 스테이징 |
git add -u | ❌ | ✔️ | ✔️ | 수정 및 삭제된 파일만 단계 |
긴 형식 플래그:
-
git add -A
git add --all
과 동일합니다. -
git add -u
git add --update
와 동일합니다.
추가 읽기:
Developer
Git 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월)에서는 " :
"라는 폴더를 추가할 수 있습니다.
Junio C gitster
( gitster )의 commit 29abb33 (2015년 10월 25일)을 참조하십시오.
git add .
에 대해 이야기할 때 git 2.0(Q1 또는 Q2 2014)부터 시작 한다는 점에 유의하세요. (작업 트리 내의 현재 경로)에는 '를 사용해야 합니다 .
' 다른 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 commit -a
" 및 기타 명령과의 일관성을 위해 Git 2.0의 전체 트리에서 작동 합니다. 수 있도록하는 메커니즘이 없을 것이기 때문에 "git add -u
"것처럼 작동을 "git add -u .
"이 "을 사용하는 사람들을 위해 중요하다git add -u
경로에 대해서만 인덱스를 업데이트 (pathspec없이)" 현재 하위 디렉토리에서 Git 2.0이 오기 전에git add -u .
"라고 명시적으로 말하도록 손가락 훈련을 시작합니다.이러한 상황에서 Git 2.0의 동작이 현재 버전과 다르기 때문에 이러한 명령이 pathspec 없이 실행되고 현재 디렉토리 외부에서 로컬 변경이 있을 때 경고가 발행됩니다.
VonC
Charles의 지침 에서 테스트한 후 내 제안된 이해는 다음과 같습니다.
# 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
이 블로그 게시물은 해당 명령을 적용 할 수 있습니다 어떤 상황에서 이해하는 것이 도움이 될 수있는 당신의 망할 놈의 작업 디렉토리에서 삭제 된 파일 제거 .
Richard
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 .
현재 디렉토리에 수정/삭제된 파일 추가 - 점이 없으면 현재 디렉터리에 관계없이 프로젝트의 모든 파일을 추가합니다.
0xF
Git 2.x에서 :
작업 디렉토리 에 직접 위치한 경우
git add -A
및git add .
차이 없이 작동합니다.작업 디렉토리의 하위 디렉토리에 있는 경우
git add -A
는 전체 작업 디렉토리 의 모든 파일을 추가하고git add .
현재 디렉토리 에서 파일을 추가합니다.
그리고 그게 다야.
simhumileco
보다 정제된 빠른 답변:
아래에서 둘 다 수행합니다( git add --all 과 동일).
git add -A
새 파일 + 수정된 파일 단계
git add .
단계 수정 + 삭제된 파일
git add -u
K. Kilian Lindberg
git add .
git add -A .
와 같습니다. 현재 및 하위 폴더에서만 색인에 파일을 추가합니다.
git add -A
작업 트리의 모든 폴더에서 색인에 파일을 추가합니다.
추신: 정보는 Git 2.0 (2014-05-28)에 관한 것입니다.
Alex78191
이것이 좀 더 명확성을 추가할 수 있기를 바랍니다.
!The syntax is git add <limiters> <pathspec> ! Aka git add (nil/-u/-A) (nil/./pathspec)
제한자는 -u 또는 -A 또는 nil일 수 있습니다.
Pathspec은 파일 경로 또는 점, '.' 현재 디렉토리를 나타냅니다.
Git '추가' 방법에 대한 중요한 배경 지식:
- 보이지 않는 파일, 접두사가 점이 있는 파일(dotfile)은 Git에서 자동으로 인식되지 않습니다. 그들은 '추적되지 않음'으로 나열되지도 않습니다.
- 빈 폴더는 Git에 의해 추가되지 않습니다. 그들은 '추적되지 않음'으로 나열되지도 않습니다. (해결 방법은 추적 파일에 보이지 않을 수 있는 빈 파일을 추가하는 것입니다.)
- Git 상태는 해당 하위 폴더에서 하나 이상의 파일이 추적되지 않는 한 하위 폴더 정보, 즉 추적되지 않은 파일을 표시하지 않습니다. 그 전에 Git은 전체 폴더를 범위 밖, 즉 '비어 있음'으로 간주합니다. 추적 항목이 비어 있습니다.
- filespec = '.' 지정 (점) 또는 현재 디렉토리는
-A
도 지정하지 않는 한 재귀적이지 않습니다. 점은 엄격하게 현재 디렉토리를 나타냅니다. 위 및 아래에 있는 경로를 생략합니다.
이제 그 지식을 바탕으로 위의 답변을 적용할 수 있습니다.
리미터는 다음과 같습니다.
-
-u
=--update
= 추적된 파일의 하위 집합 => 추가 = 아니요; 변경 = 예; 삭제 = 예. => 아이템 추적되는 경우. -
-A
=--all
(-a
없음) = 모든 추적되지 않는/추적된 파일의 상위 집합입니다. => 항목이 인정되는 경우,git add -A
을 찾아서 추가합니다.
경로 스펙은 다음과 같습니다.
- Git 2.0 이전 버전에서 두 개의 리미터(update 및 all)에 대해 새로운 기본값은 현재 경로(Git 1.9 또는 이전 버전) 대신 전체 작업 트리에서 작동하는 것입니다.
- 그러나 v2.0에서는 작업이 현재 경로로 제한될 수 있습니다. 명시적 점 접미사(Git 1.9 또는 이전 버전에서도 유효함)를 추가하기만 하면 됩니다.
git add -A .
git add -u .
결론적으로 내 정책은 다음과 같습니다.
- 추가할 덩어리/파일이
git status
에서 설명되는지 확인하십시오. - 파일/폴더가 보이지 않아 누락된 항목이 있는 경우 별도로 추가하십시오.
- 일반적으로 관심 있는 파일만 추적되지 않거나 인식되지 않도록 좋은
.gitignore
- 저장소의 최상위 수준에서 "git add -A"를 눌러 모든 항목을 추가합니다. 이것은 모든 Git 버전에서 작동합니다.
- 원하는 경우 인덱스에서 원하는 항목을 제거합니다.
- 큰 버그가 있는 경우 'git reset'을 수행하여 인덱스를 완전히 지웁니다.
AnneTheAgile
둘 다 git add .
git add -A
는 최신 버전의 Git에서 모든 신규, 수정 및 삭제된 파일을 준비합니다.
차이점은 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 .
, 삭제된 파일을 준비 하지 않습니다. 그러나 git add -A
명령을 수행하는 위치에 관계없이 이 변경 사항을 확실히 준비합니다.
Sabbir Ahmed
-A
옵션은 작업 트리와 일치하도록 인덱스 항목을 추가, 수정 및 제거합니다.
Git 2에서는 -A
옵션이 이제 기본값입니다.
때 .
Git 문서에 따라 현재 있는 디렉토리로 업데이트 범위를 제한하는 기능이 추가되었습니다.
<pathspec>
을 지정하지 않으면 전체 작업 트리의 모든 파일이 업데이트됩니다(현재 디렉터리와 하위 디렉터리로 업데이트를 제한하는 데 사용된 이전 버전의 Git).
내가 추가할 한 가지는 --interactive
또는 -p
모드가 사용되는 경우 git add
는 업데이트( -u
) 플래그가 사용된 것처럼 동작하고 새 파일을 추가하지 않는다는 것입니다.
Yehuda Schwartz
각 플래그가 하는 일에 대한 설명이 있으면 유용합니다. 비트 와 같은 CLI를 사용하면 입력할 때 플래그 설명에 액세스할 수 있습니다.
Chris W
출처 : http:www.stackoverflow.com/questions/572549/difference-between-git-add-a-and-git-add
'etc. > StackOverFlow' 카테고리의 다른 글
serialVersionUID란 무엇이며 왜 사용해야 합니까? (0) | 2021.11.05 |
---|---|
Bash에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법 (0) | 2021.11.05 |
Python에서 두 목록을 어떻게 연결합니까? (0) | 2021.11.05 |
커밋의 모든 파일을 어떻게 나열합니까? (0) | 2021.11.05 |
한 줄에 여러 예외 잡기(블록 제외) (0) | 2021.11.05 |