부트캠프 프로젝트를 진행하면서 나름 Github을 활용한 협업에 적응했다고 생각했지만, 사용 자체에 익숙해진 것이지 개념이나 용어가 붕 떠있는 상태라고 느꼈다. 오늘은 Git flow와 용어, 우리 팀에서 사용하기로 한 임시 flow의 전반도 정리를 해두려고 한다.
Git은 소스코드를 원활하게 관리하기 위해 개발된 '분산형 버전관리 시스템'으로, Linux의 소스코드를 관리하기 위해 개발되었다. 소스코드의 변경 이력을 쉽게 확인할 수 있고, 특정 시점의 코드와 비교하거나 해당 시점의 코드로 변경할 수 있다. 또한, 사용자의 코드로 인해 다른 사용자의 코드가 손상되지 않도록, 코드의 충돌을 알리는 기능도 한다.
레포지토리(Git Repository) : 저장소를 가리키는 용어로, 파일과 문서를 저장해두는 공간이다. 내 경우는 대부분 git init을 통해 생성한 로컬 저장소와, Github을 활용한 원격 저장소(Remote Repository)를 사용한다.
CLI(Command-Line Interface) : 명령어 인터페이스로, 터미널을 통해 컴퓨터를 동작시키는 방식이다.
커밋(Commit) : 현재 시점을 기록한 것으로, 프로젝트에서 무시하도록 하지 않은 모든 정보를 저장한다.
인덱스(Index) : 커밋할 변경사항을 모아놓은 공간으로, 작업폴더(Work Tree)의 변경내용을 인덱스에 기록하는 것을 스테이지(Stage)라고 한다.
브랜치(Branch) : 다른 작업영역에 영향을 미치지 않는 독립적인 작업영역이다. 하나의 브랜치에서 여러갈래의 브랜치가 새로 생성될 수 있다.
머지(Merge) : 선택한 브랜치에 다른 브랜치에서 커밋한 내용을 병합하는 동작이다.
컴플릭트(Comflict) : 동시에 같은 파일의 유사한 부분을 수정한 경우 발생하는 코드충돌을 의미하며, 의도에 맞는 코드를 선택해야 병합할 수 있다.
리베이스(rebase) : History를 병합하는 동작이다. 다른 브랜치들의 코드들 역시 최신화하기 위해서는 추가적으로 머지를 해야한다. 일반적으로 프로젝트의 성격, 팀에 따라 머지와 비교하여 선택한다.
git config --global user.name 유저이름 : 해당 작업환경에서 소스코드를 변경한 이력에 남겨질 유저 이름을 설정
git config --global user.email 유저이메일 : 해당 작업환경에서 소스코드를 변경한 이력에 남겨질 유저 이메일을 설정
공유할 필요가 없거나, 보안 등의 이유로 공유해서는 안 되는 파일들을 명시하는 파일.
현 시점 가장 많이 쓰는 원격저장소. git을 활용한 협업을 위한 다양한 기능을 지원한다.
깃헙에서 지원하는 기능으로, 커밋하여 푸쉬한 변화들을 모아 해당 변화를 원격 리모트에 반영하는 요청을 보낸다. 본인이 보낸 PR을 스스로 머지할 수도 있지만, 대체로 리뷰어를 설정하여 해당 리뷰어가 코드를 다시 읽어보고 이상이 없으면 머지하는 방식으로 활용된다.
빼먹은 내용이 많으니, 추가 작성합시다.
출처