Github 협업을 위한 한 페이지 정리

김재만·2022년 5월 25일
0

부트캠프 프로젝트를 진행하면서 나름 Github을 활용한 협업에 적응했다고 생각했지만, 사용 자체에 익숙해진 것이지 개념이나 용어가 붕 떠있는 상태라고 느꼈다. 오늘은 Git flow와 용어, 우리 팀에서 사용하기로 한 임시 flow의 전반도 정리를 해두려고 한다.

Git

Git은 소스코드를 원활하게 관리하기 위해 개발된 '분산형 버전관리 시스템'으로, Linux의 소스코드를 관리하기 위해 개발되었다. 소스코드의 변경 이력을 쉽게 확인할 수 있고, 특정 시점의 코드와 비교하거나 해당 시점의 코드로 변경할 수 있다. 또한, 사용자의 코드로 인해 다른 사용자의 코드가 손상되지 않도록, 코드의 충돌을 알리는 기능도 한다.

용어정리

  • 레포지토리(Git Repository) : 저장소를 가리키는 용어로, 파일과 문서를 저장해두는 공간이다. 내 경우는 대부분 git init을 통해 생성한 로컬 저장소와, Github을 활용한 원격 저장소(Remote Repository)를 사용한다.

  • CLI(Command-Line Interface) : 명령어 인터페이스로, 터미널을 통해 컴퓨터를 동작시키는 방식이다.

  • 커밋(Commit) : 현재 시점을 기록한 것으로, 프로젝트에서 무시하도록 하지 않은 모든 정보를 저장한다.

  • 인덱스(Index) : 커밋할 변경사항을 모아놓은 공간으로, 작업폴더(Work Tree)의 변경내용을 인덱스에 기록하는 것을 스테이지(Stage)라고 한다.

  • 브랜치(Branch) : 다른 작업영역에 영향을 미치지 않는 독립적인 작업영역이다. 하나의 브랜치에서 여러갈래의 브랜치가 새로 생성될 수 있다.

  • 머지(Merge) : 선택한 브랜치에 다른 브랜치에서 커밋한 내용을 병합하는 동작이다.

  • 컴플릭트(Comflict) : 동시에 같은 파일의 유사한 부분을 수정한 경우 발생하는 코드충돌을 의미하며, 의도에 맞는 코드를 선택해야 병합할 수 있다.

  • 리베이스(rebase) : History를 병합하는 동작이다. 다른 브랜치들의 코드들 역시 최신화하기 위해서는 추가적으로 머지를 해야한다. 일반적으로 프로젝트의 성격, 팀에 따라 머지와 비교하여 선택한다.

CLI 명령어정리

1. Git 환경설정 시 쓰는 명령어

  • git config --global user.name 유저이름 : 해당 작업환경에서 소스코드를 변경한 이력에 남겨질 유저 이름을 설정

  • git config --global user.email 유저이메일 : 해당 작업환경에서 소스코드를 변경한 이력에 남겨질 유저 이메일을 설정

2. 프로젝트 세팅 시 쓰는 명령어

  • git init : 현재 프로젝트 폴더를 git 명령어를 통해 접근할 수 있게하고, 로컬 저장소를 생성
  • git remote : 현재 프로젝트에 설정된 원격 저장소를 확인
  • git remote add origin "저장소주소" : 해당 프로젝트의 원격 저장소를 추가
  • git clone "저장소주소" : 해당 저장소의 프로젝트를 현재 폴더에 복사

3. 프로젝트 과정에서 일상적으로 쓰는 명령어

  • git add -A : 현재 커밋에 포함되지 않은 변경사항을 모두, 스테이지에 올림
  • git commit -m "커밋이름" : 커밋을 생성하여, 현재 시점을 저장
  • git status : 현재 작업폴더의 git 상태를 확인
  • git log : 이제까지 Commit한 정보를 확인(:q로 종료)
  • git push origin "브랜치명" : 원격 저장소의 해당 브랜치에 코드를 보내는 명령어
  • git pull origin "브랜치명" : 원격 저장소의 해당 브랜치의 코드를 받아오는 명령어

  • git reset XXXXXX --hard : history를 포함하여 모든 정보를 XXXXXX의 일련번호를 가진 시점으로 초기화
  • git revert : history는 그대로 두고, 파일만 이전의 커밋의 상태로 변환(커밋 창이 뜨면 vi > :wq)

  • git branch "브랜치명" : 현재 브랜치의 상태를 가지고 있는 새로운 브랜치를 생성
  • git branch -a : 로컬과 원격의 브랜치를 확인
  • git checkout "브랜치명" : 해당 브랜치로 이동
    • git checkout -b "브랜치명" : 브랜치를 생성하며, 해당 브랜치로 이동
  • git merge "브랜치명" : 현재 브랜치에 해당 브랜치에서 커밋한 정보를 병합
  • git branch -D "브랜치명" : 다 쓴 브랜치 삭제
  • git rebase "브랜치명" : 현재의 브랜치를 리베이스하여, 해당 브랜치와 합치는 명령어. History까지 병합됨
  • git rebase --continue : 리베이스 과정에서 컴플릭트가 발생한 경우, 이를 해결하고 동작을 재개하는 명령어
  • git rebase --abort : 중단된 리베이스를 취소
  • git fetch : 현재 원격 저장소의 상태를 확인

gitignore

공유할 필요가 없거나, 보안 등의 이유로 공유해서는 안 되는 파일들을 명시하는 파일.

  • 프로젝트 최상위에 .gitignore 파일을 생성하여 사용
  • 해당 파일들은 git status를 포함한 git 동작에서 제외된다.

Github

현 시점 가장 많이 쓰는 원격저장소. git을 활용한 협업을 위한 다양한 기능을 지원한다.

Pull Request(PR)

깃헙에서 지원하는 기능으로, 커밋하여 푸쉬한 변화들을 모아 해당 변화를 원격 리모트에 반영하는 요청을 보낸다. 본인이 보낸 PR을 스스로 머지할 수도 있지만, 대체로 리뷰어를 설정하여 해당 리뷰어가 코드를 다시 읽어보고 이상이 없으면 머지하는 방식으로 활용된다.

마무리

빼먹은 내용이 많으니, 추가 작성합시다.

출처

누구나 쉽게 이해할 수 있는 Git 입문
얄팍한 코딩사전 - Youtube

profile
듣는 것을 좋아하는 개발자입니다

0개의 댓글