용어집
이 핸드북 전체에서 사용되는 Git 및 GitHub 용어에 대한 간단한 정의입니다. 각 항목은 이를 자세히 설명하는 장으로 다시 연결됩니다.
branch
branch는 commit을 가리키는 이동 가능한 레이블로, 프로젝트의 나머지 부분과 분리된 히스토리 라인에서 작업할 수 있게 해줍니다. branch를 만들어도 파일이 복사되지 않습니다. 대신 commit을 통해 독립적으로 이동할 수 있는 포인터를 추가합니다. Branches를 참고하세요.
clone
git clone <url>은 원격 저장소를 당신의 컴퓨터에 복사하며, 완전한 히스토리를 포함하여 바로 작업할 준비가 되어 있습니다. Your first repository를 참고하세요.
commit
commit은 프로젝트의 저장된 스냅샷입니다. 그 시점의 모든 추적된 파일, 무엇이 변경되었는지 설명하는 메시지, 그리고 그 이전 commit으로의 링크를 포함합니다. The commit loop를 참고하세요.
detached HEAD
Detached HEAD는 HEAD가 branch 대신 commit을 직접 가리킬 때 발생합니다. 보통 branch 이름이 아닌 특정 commit을 checkout했을 때입니다. 거기서 만든 commit들은 어떤 branch 외부에 있어서 나중에 다시 찾기가 까다로울 수 있습니다. Branches를 참고하세요.
fetch
git fetch는 원격에서 새 commit들을 다운로드하지만 현재 branch에 병합하지 않습니다. 이는 origin/main과 같은 원격 추적 branch만 업데이트합니다. Remotes and GitHub를 참고하세요.
fork
fork는 GitHub에서 다른 사람의 저장소를 당신이 복사한 것입니다. push 접근 권한이 없는 프로젝트에 기여하고 싶을 때 사용합니다. The pull request flow를 참고하세요.
.gitignore
.gitignore은 Git이 추적하면 안 되는 것들의 패턴을 나열한 파일입니다. dependency 폴더나 비밀 정보가 담긴 파일 같은 것들입니다. 이는 Git이 이미 추적 중인 파일에만 영향을 미칩니다. Ignoring files and good habits를 참고하세요.
HEAD
HEAD는 현재 checkout한 commit을 가리키는 Git의 포인터입니다. 대부분의 경우 현재 branch를 가리키며, 이것이 다시 commit을 가리킵니다. Branches를 참고하세요.
main
main은 저장소의 기본 branch를 위한 관례적인 이름입니다. 더 오래된 저장소와 튜토리얼에서는 같은 역할을 하는 master를 사용하기도 합니다. Your first repository를 참고하세요.
merge
git merge <branch>는 다른 branch의 commit들을 현재 branch로 가져와서 두 히스토리를 하나로 병합합니다. Merging and conflicts를 참고하세요.
merge conflict
merge conflict는 두 branch가 파일의 같은 줄을 변경했는데 Git이 이를 자동으로 병합할 수 없을 때 발생합니다. Git은 충돌 지점을 <<<<<<<, =======, >>>>>>>로 표시하고 올바른 결과를 선택할 때까지 기다립니다. Merging and conflicts를 참고하세요.
origin
origin은 저장소가 clone된 원격에 Git이 부여하는 관례적인 이름입니다. 이는 단순한 이름일 뿐이므로 자유롭게 이름을 바꾸거나 다른 원격을 추가할 수 있습니다. Remotes and GitHub를 참고하세요.
pull
git pull은 원격에서 새 commit들을 가져와서 현재 branch로 병합합니다. 이 두 작업을 한 번에 수행합니다. Remotes and GitHub를 참고하세요.
pull request
pull request(PR)는 한 branch를 다른 branch로 병합해달라는 GitHub의 요청입니다. 병합이 일어나기 전에 논의와 검토를 위해 열립니다. The pull request flow를 참고하세요.
push
git push는 로컬 commit들을 원격으로 전송하여 GitHub와 같은 호스트나 협업자가 볼 수 있게 합니다. Remotes and GitHub를 참고하세요.
rebase
Rebase는 branch의 commit들을 다른 시작점 위에 재생하여 merge commit 대신 직선형의 히스토리를 만듭니다. 이는 commit 히스토리를 다시 쓰므로 다른 사람이 이미 기반을 둔 branch에는 사용하지 않는 것이 좋습니다. Merging and conflicts를 참고하세요.
reflog
reflog는 최근에 HEAD가 가리켰던 모든 곳의 로컬 기록입니다. 여기에는 branch가 더 이상 도달하지 못하는 commit들도 포함됩니다. reset이나 branch 삭제 후 commit을 복구하는 방법이며, Git이 결국 정리할 때까지 유지됩니다. Undoing things를 참고하세요.
refspec
refspec은 원격의 설정에 저장된 매핑으로, git fetch에게 원격의 어떤 branch를 다운로드할지, 그리고 어떤 원격 추적 branch에 기록할지를 알려줍니다. Remotes and GitHub를 참고하세요.
remote
remote는 다른 곳에서 호스팅되는 저장소의 복사본으로, 보통 URL을 통해 접근합니다. GitHub은 GitLab과 Bitbucket 같은 옵션들과 함께 remote를 호스팅하는 인기 있는 곳입니다. Remotes and GitHub를 참고하세요.
remote-tracking branch
origin/main과 같은 remote-tracking branch는 마지막으로 fetch 또는 pull을 했을 때 원격의 branch가 있던 위치에 대한 저장소의 로컬 기록입니다. 이는 저절로 업데이트되지 않으며, fetch 또는 pull에 의해서만 이동합니다. Remotes and GitHub를 참고하세요.
repository
repository(또는 repo)는 Git이 추적 중인 프로젝트 폴더이며, 그 안에서 만들어진 모든 commit의 완전한 히스토리를 포함합니다. Your first repository를 참고하세요.
reset
git reset은 현재 branch를 다른 commit을 가리키도록 이동시킵니다. --soft는 staging area와 working directory를 건드리지 않고, --mixed는 staging area도 비우며, --hard는 working directory까지 덮어써서 저장되지 않은 변경 사항을 버립니다. 이미 공유한 branch에서는 주의해서 사용하세요. Undoing things를 참고하세요.
revert
git revert <commit>은 이전 commit의 변경 사항을 되돌리는 새 commit을 만들어 원래 commit은 남겨둡니다. 이는 이미 공유된 branch에서 무언가를 되돌리는 안전한 방법입니다. Undoing things를 참고하세요.
staging area (index)
staging area(또는 index라고도 부름)는 다음 commit이 정확히 무엇을 포함할지를 정열하는 곳입니다. git add는 working directory에서의 변경 사항을 staging area로 이동시키고, git commit은 staged된 것을 저장합니다. The commit loop를 참고하세요.
stash
git stash는 저장되지 않은 변경 사항을 보관하여 깨끗한 working directory로 작업을 전환한 후 나중에 git stash pop으로 다시 가져올 수 있게 합니다. Undoing things를 참고하세요.
tag
tag는 한 commit에 고정된 레이블로, 보통 릴리스를 표시할 때 사용합니다. branch와 달리 새 commit이 만들어져도 이동하지 않습니다. Branches를 참고하세요.
terminal
terminal은 git 명령을 포함하여 텍스트로 명령을 입력하고 그 결과를 읽는 앱입니다. 또한 command line이라고도 불립니다. Your first repository를 참고하세요.
upstream
branch의 upstream은 이것이 추적하는 원격 branch로, 보통 git push -u로 설정됩니다. 한번 설정하면 일반 git push와 git pull이 원격과 branch를 매번 이름으로 지정하지 않아도 그 branch에 대해 작동합니다. Remotes and GitHub를 참고하세요.
working directory
working directory는 디스크의 실제 파일 폴더로, 에디터에서 열려 있는 것입니다. 현재 파일들의 상태를 가지고 있으며, 그것이 staged되었는지 또는 commit되었는지와 관계없이 모두 포함합니다. The commit loop를 참고하세요.

