Close

git add

Git이나 다른 버전 제어 시스템에서 작업할 때 "저장"한다는 개념은 워드 프로세서나 기존의 다른 파일 편집 애플리케이션에서 저장하는 것보다 더 미묘한 프로세스입니다. 기존의 소프트웨어에서 "저장"이라는 표현은 Git 용어의 "커밋"과 같습니다. 커밋은 Git에서 "저장"에 해당하는 말입니다. 기존의 저장이라는 개념은 기존 파일을 덮어쓰거나 새 파일을 쓰는 데 사용되는 파일 시스템 작업으로 생각해야 합니다. 그 대신 Git 커밋은 파일 및 디렉터리 모음에 대해 이루어지는 작업입니다.

Git과 SVN에서 변경 사항을 저장하는 것도 프로세스가 다릅니다. SVN 커밋 또는 '체크인'은 중앙 집중식 서버에 원격 푸시를 수행하는 작업입니다. 즉, 프로젝트의 변경 사항을 완전히 '저장'하려면 SVN 커밋에 인터넷 액세스가 필요합니다. Git 커밋은 로컬에서 캡처하여 구축한 다음 필요에 따라 git push -u origin main 명령을 사용하여 원격 서버로 푸시할 수 있습니다. 두 방법의 차이점은 아키텍처 설계 간의 근본적인 차이에 있습니다. Git은 분산된 애플리케이션 모델인 반면 SVN은 중앙 집중식 모델입니다. 분산된 애플리케이션은 중앙 집중식 서버처럼 단일 장애 지점이 없기 때문에 일반적으로 더 강력합니다.

git add, git status, git commit 명령은 모두 Git 프로젝트의 현재 상태의 스냅샷을 저장하는 데 함께 사용됩니다.

Git에는 '스태시'라는 추가적인 저장 메커니즘이 있습니다. 스태시는 커밋할 준비가 되지 않은 변경 사항을 보관하는 임시 저장 공간입니다. 스태시는 세 개의 트리 중 첫 번째 작업 디렉터리에서 작동하며 사용 옵션이 다양합니다. 자세히 알아보려면 git stash 페이지를 방문하세요.

Git 리포지토리는 특정 파일이나 디렉터리를 무시하도록 구성할 수 있습니다. 이렇게 하면 Git이 무시된 콘텐츠에 대한 변경 사항을 저장하지 못하게 됩니다. Git에는 무시 목록을 관리하는 여러 가지 구성 방법이 있습니다. Git 무시 구성은 git ignore 페이지에 자세히 설명되어 있습니다.


git add


git add 명령은 작업 디렉터리의 변경 사항을 스테이징 영역에 추가합니다. 다음 커밋에 특정 파일에 대한 업데이트를 포함하고 싶다고 Git에 알려줍니다. 하지만 git commit을 실행하기 전까지는 변경 사항이 실제로 기록되지 않으므로 git add는 리포지토리에 별다른 영향을 주지 않습니다.

이 명령과 함께 작업 디렉터리와 스테이징 영역의 상태를 보려면 git status도 필요합니다.

작동 방식


git addgit commit 명령은 기본적인 Git 워크플로를 구성합니다. 팀의 공동 작업 모델에 관계없이 모든 Git 사용자가 이해해야 하는 두 가지 명령으로, 프로젝트 버전을 리포지토리의 기록에 기록하는 수단입니다.

프로젝트 개발은 기본적인 편집/스테이징/커밋 패턴을 중심으로 이루어집니다. 먼저 작업 디렉터리에서 파일을 편집합니다. 프로젝트의 현재 상태에 대한 복사본을 저장할 준비가 되면 git add로 변경 사항을 스테이징합니다. 스테이징된 스냅샷에 만족하면 git commit으로 프로젝트 기록에 커밋합니다. git reset 명령은 커밋 또는 스테이징된 스냅샷을 실행 취소하는 데 사용됩니다.

git addgit commit 외에도 세 번째 명령인 git push는 완전한 공동 작업 Git 워크플로에 필수적입니다. git push는 커밋된 변경 사항을 공동 작업을 위해 원격 리포지토리로 보내는 데 사용됩니다. 그러면 다른 팀원들이 저장된 변경 사항 집합에 액세스할 수 있습니다.

Git add 스냅샷
Git 브랜치
관련 자료

Git 브랜치

Bitbucket 로고
솔루션 보기

Bitbucket Cloud에서 Git에 대해 알아보기

git add 명령은 리포지토리에 파일을 추가하는 svn add와 혼동해서는 안 됩니다. 그 대신 git add는 조금 더 추상적인 수준의 변경에서 작동합니다. 즉, git add는 파일을 변경할 때마다 호출해야 하는 반면 svn add는 각 파일에 대해 한 번만 호출하면 됩니다. 불필요한 것처럼 들릴 수도 있지만 이 워크플로를 사용하면 프로젝트를 훨씬 쉽게 체계화할 수 있습니다.

스테이징 영역


git add 명령의 주요 기능은 작업 디렉터리에서 보류 중인 변경 사항을 git staging 영역으로 승격하는 것입니다. 스테이징 영역은 Git의 독특한 특징 중 하나이며 SVN(또는 Mercurial)을 사용했던 경우 이 개념을 이해하는 데 시간이 걸릴 수 있습니다. 작업 디렉터리와 프로젝트 기록 사이의 버퍼라고 생각하면 도움이 됩니다. 스테이징 영역은 작업 디렉터리 및 커밋 기록과 함께 Git "3개의 트리" 중 하나로 간주됩니다.

마지막 커밋 이후에 적용한 모든 변경 사항을 커밋하는 대신 스테이징을 통해 관련 변경 사항을 고도로 집중된 스냅샷으로 그룹화한 다음 실제로 프로젝트 기록에 커밋할 수 있습니다. 따라서 관련 없는 파일에 여러 종류의 편집을 수행한 다음 되돌아가서 스테이징에 관련 변경 사항을 추가하고 논리적 커밋으로 분할한 다음 하나씩 커밋할 수 있습니다. 다른 수정 제어 시스템과 마찬가지로 프로젝트의 나머지 부분에 미치는 영향을 최소화하면서 버그를 추적하고 변경 사항을 되돌릴 수 있도록 원자성 커밋을 만드는 것이 중요합니다.

일반적인 옵션


git add <file>

다음 커밋을 위해 <file>의 모든 변경 사항을 스테이징합니다.

git add <directory>

다음 커밋을 위해 <directory>의 모든 변경 사항을 스테이징합니다.

git add -p

다음 커밋에 추가할 파일의 일부를 선택할 수 있는 대화형 스테이징 세션을 시작합니다. 그러면 변경 사항 청크가 표시되고 명령을 입력하라는 메시지가 표시됩니다. 청크를 스테이징하려면 y를, 청크를 무시하려면 n을, 작은 청크로 나누려면 s를, 청크를 수동으로 편집하려면 e를, 종료하려면 q를 사용합니다.

예제


새 프로젝트를 시작할 때 git addsvn import와 같은 기능을 수행합니다. 현재 디렉터리의 초기 커밋을 만들려면 다음과 같은 두 명령을 사용합니다.

git add .
git commit

프로젝트를 시작하면 git add에 경로를 전달하여 새 파일을 추가할 수 있습니다.

git add hello.py
git commit

위 명령은 기존 파일에 변경 사항을 기록하는 데에도 사용할 수 있습니다. 다시 강조하자면 Git은 새 파일의 스테이징 변경 사항과 리포지토리에 이미 추가된 파일의 변경 사항을 구분하지 않습니다.

요약


지금까지 다룬 내용을 복습하자면 git add는 일련의 작업 중 첫 번째 명령으로, 현재 프로젝트 상태의 스냅샷을 커밋 기록에 "저장"하도록 Git에 지시합니다. git add를 단독으로 사용하면 보류 중인 변경 사항이 작업 디렉터리에서 스테이징 영역으로 승격됩니다. git status 명령은 리포지토리의 현재 상태를 살펴보는 데 사용되며 git add 승격을 확인하는 데 사용할 수 있습니다. git reset 명령은 git add를 실행 취소하는 데 사용됩니다. 그리고 git commit 명령은 스테이징 디렉터리의 스냅샷을 리포지토리 커밋 기록에 커밋하는 데 사용됩니다.


이 문서 공유
다음 토픽

여러분께 도움을 드릴 자료를 추천합니다.

이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.

도구로 가득한 벽을 사용하여 협업하는 사람들

Bitbucket 블로그

DevOps 일러스트레이션

DevOps 학습 경로

Atlassian 전문가와 함께 하는 Demo Den 기능 데모

Bitbucket Cloud가 Atlassian Open DevOps와 작동하는 방법

DevOps 뉴스레터 신청

Thank you for signing up