git add . vs git add *: 파일 스테이징 명령어의 차이점
Git을 사용할 때, 특히 파일을 스테이징하는 과정에서 자주 사용하는 두 명령어가 있습니다: git add .
와 git add *
. 이 두 명령어는 비슷해 보이지만 실제로는 몇 가지 중요한 차이점이 있습니다. 이러한 차이점을 이해하면 효율적인 커밋 관리와 실수 방지에 큰 도움이 됩니다. 이 글에서는 각 명령어의 동작 방식과 사용 상황에 대해 자세히 살펴보겠습니다.
git add .의 동작 원리
- 모든 변경 사항을 스테이징
git add .
는 현재 디렉토리와 그 하위 디렉토리의 모든 변경 사항을 스테이징합니다.- 수정된 파일, 새로 추가된 파일, 삭제된 파일을 모두 포함해 스테이징할 수 있습니다.
- 대규모 프로젝트에서 여러 폴더에 걸쳐 발생한 변경 사항을 한 번에 처리할 수 있어 시간을 절약할 수 있습니다.
- 하위 디렉토리까지 포함
- 현재 디렉토리뿐만 아니라 그 하위 디렉토리의 파일들까지 자동으로 포함됩니다.
- 사용 예시
- 프로젝트 전체에 걸쳐 많은 파일이 수정되었거나 삭제된 경우,
git add .
를 사용해 모든 변경 사항을 스테이징하는 것이 효율적입니다. - 특히 대규모 커밋을 만들 때 유용합니다.
- 프로젝트 전체에 걸쳐 많은 파일이 수정되었거나 삭제된 경우,
- 주의사항
.gitignore
파일에 명시된 파일들은 스테이징되지 않습니다.- 삭제된 파일도 자동으로 스테이징되므로, 실수로 파일을 삭제한 경우 이 명령어를 사용할 때 주의해야 합니다.
git add *의 동작 원리
- 현재 디렉토리의 파일만 스테이징
git add *
는 현재 디렉토리의 파일들만 스테이징합니다.- 하위 디렉토리의 파일은 포함되지 않으며, 수정된 파일과 새로 추가된 파일만 스테이징됩니다.
- 삭제된 파일은 별도의 명령어(
git rm
)로 처리해야 합니다.
- 와일드카드의 특성
*
는 Unix 쉘에서 와일드카드로 사용되며, 현재 디렉토리의 모든 파일을 의미합니다.- 하위 디렉토리의 파일은 포함하지 않으며, 숨김 파일(이름이
.
으로 시작되는 파일)은 자동으로 스테이징되지 않습니다. - 숨김 파일을 포함하려면
git add .
또는git add .*
를 사용해야 합니다.
- 사용 예시
- 특정 모듈에서만 작업 중이거나 현재 디렉토리의 파일들만 변경한 경우에 사용하면 효과적입니다.
- 특히 하위 디렉토리의 변경 사항을 제외하고 작업하고 싶을 때 유용합니다.
- 주의사항
- 하위 디렉토리의 파일들을 포함하지 않기 때문에 복잡한 프로젝트 구조에서 변경 사항을 일부 놓칠 수 있습니다.
- 삭제된 파일은 자동으로 스테이징되지 않으므로, 삭제된 파일을 반영하려면
git rm
을 함께 사용해야 합니다.
요약 비교
- `git add .`:
- 전체 프로젝트의 모든 변경 사항(하위 디렉토리 포함)을 한 번에 스테이징합니다.
- 수정된 파일, 새로 추가된 파일, 삭제된 파일 모두 포함됩니다.
- 대규모 변경 작업 시 편리합니다.
- `git add *`:
- 현재 디렉토리의 파일만 스테이징하며, 하위 디렉토리는 포함하지 않습니다.
- 삭제된 파일은 스테이징되지 않습니다.
- 특정 디렉토리에서 국소적인 변경이 있을 때 적합합니다.
결론
git add .
와 git add *
는 비슷하지만, 프로젝트의 구조와 현재 작업 상황에 따라 적절히 선택하여 사용해야 합니다. 전체 변경 사항을 빠르게 반영하려면 git add .
가 적합하고, 특정 디렉토리의 파일들만 국소적으로 스테이징하고 싶다면 git add *
가 더 효율적일 수 있습니다. 예를 들어, 모든 디렉토리 구조가 단순한 프로젝트에서는 git add *
가 더 간편하게 사용할 수 있습니다. 각 명령어의 특성을 이해하고 상황에 맞게 사용하는 것이 중요합니다.
댓글