깃허브를 처음 시작할 때 생소한 용어들이 많아서 용어의 간단한 정의에 대해서 포스팅을 해볼려고 합니다.
앞으로 공부하면서 알게되는 용어들의 내용들을 계속 꾸준히 업데이트 하도록 할게요~
저도 공부한 내용을 정리하고 있는 중입니다. 틀리거나 부족한 부분이 있다면 댓글 부탁드립니다.
Ctrl + F 하신 후 에 영어로 검색하시면 찾기 쉬울거에요!
GitHub 용어 정리
Branch (브랜치) - 브랜치는 가지라는 뜻이다 하나의 저장소에서 여러가지가 뻗어나와 각각의 사용자가 사용할수 있게끔 하는 모양, 하나의 원격 저장소를 사용하다 보면 여러 작업자의 소스코드 버전이 달라질 수 있음 이를 방지하는 기능이 '브랜치'이다, 이렇게 뻗어나온 가지(브랜치)들을 하나의 브랜치로 Merge(병합)하여 하나의 브랜치로 모을 수 있다.
*저장소를 처음 만들면 master라는 브랜치가 만들어진다.
Repository (저장소) - 디텍토리 저장소 및 변경 내용 추적 단위
Master (마스터) - 기본의 가장 중심이 되는 Branch(브랜치)
Commit (커밋) - 인덱스에 추가 된 파일을 참조하고 분기의 헤드에 최신 상태로 업데이트 (로컬에서 저장한 파일에 대한 변경 사항 추가)
Hash (해쉬) - 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑하는 함수를 말한다. (하나의 유니크한 )
Reference (참조) - 커밋 해시에 해당하는 이름(과거 기록을 연결해주는 기능) git/refs 디텍토리에 저장됨
Head (헤드) - 분기에 대한 가장 최근 커밋에 대한 참조(가장 최근에 한 커밋), 분기의 팁(쉽게 말해 지금 작업하고 있는 브랜치)
Working Tree (워킹트리) - 분기의 파일을 변경하는 영역, 파일이 변경된 후 커밋 준비가되면 스테이징 영역으로 이동함(추적)
*스테이징 영역 - Git이 파일을 추적하기 위해서 해쉬 값을 만들어내는 첫 상황을 만들어내는 영역(변경 사항을 적용하는 준비 영역)
Merge (합병) - 나눠진 분기의 파일을하나의 파일로 만드는 과정(여러 브랜치의 분기가 만나는 과정)
Tag (태그) - 특정 히스토리 커밋에 대한 참조
Pull Request (풀 요청) - 다른사람이 브랜치에서 완료한 작업을 마스터에서 merge하도록 요청하는데 사용(내 코드를 당신의 오픈소스에 반영해주세요)
Fork (포크) - A프로젝트를 직접 변경할 권한이 없는 사용자가 A프로젝트의 변경 내용을 저장하기 위해 내 프로젝트에 A프로젝트의 사본을 가져오는 것(프로젝트의 사본을 가져와 먼저 변경하고 Pull Request 한다)
Workflows (작업흐름) - 코드의 변경 사항을 적용하기 위해 취하는 접근 방식
Stash - 변경 내용을 일시적으로 저장해주는 영역 입니다.
추가설명 : 먼저 Stash를 알아보기전에 checkout이라는 브랜치 전환 기능이 있습니다. 뒤에서 알아보도록 하고
브랜치를 전환하는 시점 예를들어 Merge(병합)을 위해 exp 브랜치에서 master 브랜치로 넘어간다 할 때
master에서도 작업하던 파일이나 새롭게 추가된 파일이 작업트리에 남아있는 채로
exp브랜치에서 전환을 하게되면 브랜치 전환에 실패할 수 있습니다.
이를 방지하고자 일시적으로 변경 내용을 다른 곳에 저장하여 충돌을 피한 후 브랜치를 전환할 수 있도록 해주는 기능이 stash 입니다.