Git 개념 요약

변경된 내용 저장하기

  • add : 추가/수정/삭제 등 변경된 내용들을 스테이지에 담는다.
  • commit : 스테이지에 담긴 내용들을 로컬 브랜치에 반영시킨다.
  • push : 로컬 브랜치에 반영된 내용들을 원격 브랜치에 반영시킨다.

여러 버전으로 작업하고 필요한 버전만 합치기 (여럿이 작업하기1)

  • branch : 선택한 커밋시점으로부터 새로운 로컬 브랜치를 만든다.
  • checkout : 선택한 로컬 브랜치로 헤드를 옮긴다.
  • merge : 헤드 로컬 브랜치에 선택한 로컬(또는 원격) 브랜치와 차이나는 변경 내용들을 반영시킨다.
    • 충돌이 발생했을 땐 충돌된 파일들을 적절하게 수정하고 add한 다음에 commit하면 병합이 완료된다.
    • 한 줄기 타고 올라가면 fast-forward merge, 두 줄기에서 합쳐지면 3way merge라고 부른다.
  • rebase : merge를 하되, 두 줄을 한 줄로 만들어준다.
    • 브랜치들 줄기모양이 많이 바뀔 수 있기 때문에 원격에 있는 브랜치들과 충돌되면 매우 혼란스러워지므로 되도록 안 쓰는 게 좋다.
    • 로컬에서 혼자 여러 브랜치를 사용할 때만 rebase를 사용해도 된다.

실제 서버의 원격 브랜치 최신 내용을 내 로컬 브랜치에 반영시키기 (여럿이 작업하기2)

  • fetch : origin의 원격 브랜치 최신 내용을 내 원격 브랜치에 반영시킨다.
  • pull : fetch 먼저 하고, 헤드 로컬 브랜치에 원격 브랜치와 차이나는 변경 내용들을 반영시킨다.

이전 커밋시점으로 되돌아가서 작업하기

  • reset : 선택한 커밋시점으로 헤드 로컬 브랜치를 되돌린다.
    • 선택한 커밋시점 이후의 커밋들을 원격 브랜치에 반영시켜놓지 않았을 경우 이 커밋들이 날아가므로 주의가 필요하다.
    • 선택한 커밋시점에 새 브랜치를 만들어서 체크아웃 하면 커밋들이 날리지 않고도 선택한 커밋시점으로 돌아가서 작업할 수 있다.
  • revert : 선택한 커밋시점의 내용으로 되돌아간 커밋이 헤드 로컬 브랜치에 추가된다.
    • 이후 병합할 때 충돌이 날 가능성이 높기 때문에 주의가 필요하다.
    • 선택한 커밋시점이 HEAD로부터 멀면 revert를 최신커밋부터 순서대로 해주어야 한다. ex) $ git revert HEAD HEAD~1 HEAD~2

커밋하지 않은 변경 내용들이 있을 때 체크아웃 하기

  • stash : unstaged, staged 내용들을 임시공간에 넣는다.

마지막 커밋 메시지 변경하기

  • commit –amend : 마지막 커밋의 메시지를 변경할 수 있다.