Skip to main content

Git 명령어 정리


1. Git Commit

1.1 개념

  • Git은 디렉토리 전체의 스냅샷을 기록하지만, 실제로는 변경된 부분(delta)만 저장하여 가볍게 유지함.
  • 대부분의 커밋은 그 위의 부모 커밋을 가리킴.

1.2 명령어

git commit

2. Git Branch

2.1 개념

  • Git의 브랜치는 커밋에 대한 참조(reference)로 매우 가볍다.
  • “하나의 커밋과 그 조상 커밋들을 포함하는 작업 내역”이라고 볼 수 있음.
  • 브랜치를 많이 만들어도 성능이나 저장공간에 영향이 없음.

2.2 명령어

git branch -f <branch>
git checkout <branch>  # 브랜치로 이동

3. Git Merge

3.1 개념

  • Merge는 두 부모를 갖는 특별한 커밋을 만들어 병합을 수행.
  • 모든 부모 커밋의 작업 내역을 포함함.

3.2 명령어

git merge <branch>

4. Git Rebase

4.1 개념

  • 커밋들을 모아서 복사한 후, 다른 브랜치에 붙이는 방식.
  • 커밋 로그를 한 줄로 정리 가능.
  • A에서 B로 리베이스 → A의 기반(base)을 B로 변경.

4.2 명령어

git rebase <branch>

5. Git Checkout

5.1 개념

  • HEAD는 브랜치나 커밋을 가리키는 이동 가능한 포인터.
  • checkout은 특정 브랜치나 커밋으로 이동시킴.
  • HEAD가 커밋을 직접 가리킬 때는 분리된 HEAD 상태.

5.2 명령어

git checkout <branch or commit>

6. 상대 참조 (Relative Reference)

6.1 기호 설명

  • ^: 한 커밋 위로
  • ~<n>: 여러 커밋 위로

6.2 예시

git HEAD^
git HEAD~2

7. Git Reset & Revert

7.1 git reset

  • 브랜치를 예전 커밋으로 이동시켜 변경 사항을 되돌림.
  • 히스토리가 삭제됨, 공동 작업 시 주의 필요.
git reset <commit>

7.2 git revert

  • 현재 브랜치에서 역 변경 커밋을 새로 만들어 안전하게 되돌림.
git revert <commit>

8. Git Cherry-pick

8.1 개념

  • 원하는 커밋만 선택적으로 복사해서 HEAD 밑에 적용.
  • 해시값을 명확히 알고 있을 때 유용.

8.2 명령어

git cherry-pick <commit1> <commit2> ...

9. Git Interactive Rebase

9.1 개념

  • 체리픽처럼 커밋을 고르는 게 아니라 목록을 직접 수정해서 순서 변경, 제거 가능.

9.2 명령어

git rebase -i <base>

10. Git Tag

10.1 개념

  • 커밋에 대한 영구적인 닻. 릴리즈 버전 등에 주로 사용.
  • 브랜치와 달리 절대 움직이지 않음.

10.2 명령어

git tag <tag> <commit>

11. Git Describe

11.1 개념

  • **가장 가까운 태그(tag)**를 기준으로 현재 위치를 설명함.

11.2 명령어

git describe <ref>

11.3 결과 형식

<tag>_<numCommits>_g<hash>

12. Git Clone

12.1 개념

  • 원격 저장소를 로컬로 복제.

12.2 명령어

git clone <repo_url>

13. Git Remote

13.1 개념

  • 원격 저장소와의 연결 정보
  • clone 시 기본 이름은 origin.

13.2 특징

  • origin/main은 원격 브랜치, 체크아웃하면 분리된 HEAD 상태.

13.3 예시

git remote
git checkout origin/main

14. Git Fetch

14.1 개념

  • 원격 저장소로부터 새 커밋 다운로드, 브랜치는 변경하지 않음.

14.2 명령어

git fetch <remote>

15. Git Pull

15.1 개념

  • fetch + merge 를 한 번에 수행.
  • 원격 저장소와 로컬 브랜치 동기화.

15.2 명령어

git pull origin main
git diff HEAD origin/main  # 차이 확인

16. Git Push

16.1 개념

  • 자신의 커밋을 공개 및 공유. 원격 저장소에 업로드.

16.2 명령어

git push origin <branch>

17. Git fakeTeamwork

17.1 개념

  • 협업자 또는 가상의 작업자 변경 내역을 로컬로 가져오는 시뮬레이션 개념.