정의

분산 버전 관리 시스템, 소프트웨어 개발 시 여러 사람이 동시에 작업할 수 있도록 도와주는 도구이다.
코드 변경 사항을 추적하고, 협업할 수 있으며, 버전 관리를 효율적으로 할 수 있다.

주요 용어

  1. Repository (저장소): 코드와 변경 내역을 저장하는 곳. 로컬 저장소, 원격 저장소(GitHub, GitLab)로 나뉜다.
  2. Commit: 변경 사항을 저장소에 저장하는 작업이다.
  3. Branch: 독립적으로 작업을 진행할 수 있는 가지이다.
  4. Merge (병합): 두 개 이상의 브랜치를 하나로 합치는 작업이다.
  5. Clone: 원격 저장소의 내용을 로컬 저장소로 복사해 오는 작업이다.
  6. Pull: 원격 저장소의 변경 사항을 로컬 저장소로 가져오는 작업이다.
  7. Push: 로컬 저장소의 변경 사항을 원격 저장소로 올리는 작업이다.
  8. Stash: 현재 작업 중인 변경 사항을 임시로 저장하고, 나중에 다시 적용할 수 있도록 하는 기능이다.
  9. Remote: 원격 저장소를 가리키는 용어이다.
  10. Fork: 다른 사람의 원격 저장소를 자신의 원격 저장소로 복사하는 작업이다.

리베이스

베이스를 새롭게 정의한다.
테스트 커밋, 오타가 섞여있는 등등 히스토리를 수정하고자 할 경우 사용한다.
특히 인터럽트 옵션을 사용한다면 대화형 방식으로 사용할 수 있다.

  • 수정할 커밋의 직전, 즉 바로 앞 커밋 해시, 아이디, HEAD 를 입력한다.
  • 에디터의 내용을 확인하고 적절한 명령어를 통한 수정 작업을 처리한다.
1
2
3
4
5
6
7

git reset --soft "커밋아이디" # 커밋아이디로 돌아오지만 기존에 커밋 되었던 기록들은 남겨둔다.
git reset --mixed "커밋아이디" # 커밋된 파일들을 작업공간으로 되돌린다. (Stage before)
git reset --hard "커밋아이디" # 커밋아이디 시점으로 되돌린다. 이전 커밋 기록도 초기화 된다.
git reset --hard HEAD~2 # 두 개의 커밋을 취소한다. 이전 커밋 기록도 초기화 된다.
git reset --mixed HEAD^ # 가장 최근의 커밋이 취소되어 작업공간으로 되돌린다.