프로그래밍 / C++ / 언리얼

Programming/Github

[Github] Git 개념과 명령어 정리

아트성 2022. 4. 19. 10:01

Git의 개요

 

버전 관리 시스템

버전 관리 시스템이란? 파일의 변화를 기록해서 특정 지점을 불러올 수 있는 시스템을 말한다.

 

   - Git은 분산형 버전 관리 시스템 (Distributed Version Control System)

   - Git은 스냅샷을 이용해서 버전 관리함.

로컬 중앙집중형 분산형
내 컴퓨터에서만 버전 관리 서버에서만 버전 관리 내컴퓨터 + 서버에서 버전관리

 

Git의 작업흐름

Modified → Staged → Committed 

 

Modified : 수정한 파일을 아직 데이터베이스에 커밋하지 않은 상태, 수정만 일어난 상태

Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태.

Committed : 데이터가 로컬데이터베이스에 안전하게 저장됐다는것을 의미한다. 버전 관리를 한 상태 

 

Git의 명령어들

 

작업 체크아웃 / 생성

- git checkout : 특정버전으로 이동하는 것. ( -b : 브랜치를 만들고 체크아웃)

  git checkout <main>  git checkout -b <브랜치명>

 

- git commit : 커밋 생성 / 즉 버전 업데이트를 말한다.

  git commit -m <커밋 주석>

 

- git branch : 브랜치 생성 / 특정 커밋에 대한 참조

   > -f : 브랜치를 강제로 옮기는 것

   > -u : 원격 추적 설정기능

   > 상대 참조(Relative Reference)

  •  HEAD : 현재 작업 중인 버전
  • ^ : 특정 커밋의 부모
  • 2 : 두 번재 부모
  • ~ : 특정 커밋으로부터 어떤 수만큼 떨어진 부모 

- git tag : 특정 커밋에다가 어떤 내용을 남기는 것

 

 

 

작업 병합 / 복사

- git merge : 서로 다른 두 개의 커밋을 합쳐서 새로운 커밋을 생성1

  git merge <대상이 되는 브랜치>(병합 / 새 커밋 생성) →

  git checkout <체크아웃 할 브랜치>   git merge <병합 할 브랜치> (브랜치 정리 / 최신커밋은 모든 브랜치가 공유) 

 

 

 

 

- git rebase : HEAD ~ 분기점까지의 상위커밋들을 복사해 다른 커밋으로 붙여넣는 것 ( -i : 인터랙티브 리베이스)

  git checkout <체크아웃 할 브랜치>  git rebase <병합 할 브랜치>

 


- git cherry-pick :  HEAD가 있는 커밋에다 일련의 커밋들을 복사한다.

  git checkout <체크아웃 할 브랜치> → git cherry-pick <Commit1> <Commit2> <...>

 

작업 되돌리기

- git reset : 이전으로 되돌아가는 것

   git checkout <체크아웃 할 브랜치> → git reset HEAD~1(바로 전 단계로 리셋)

 

- git revert : 특정 커밋의 정반대의 새로운 커밋을 만드는 것

   git revert <체크아웃 할 브랜치> → git reset HEAD(바로 전 단계로 리셋)

reset  revert
시간을 아예 과거의 특정 커밋으로 되돌린다.
(만약 최근 자료들을 팀원들과 공유하고 있으면 reset으로 되돌리기 방식은 상당히 위험할 수 있다.)



과거의 특정 커밋을 없던걸로 처리한다. 
(과거로 돌아가겠다는 이력을 남김)


 

 

원격 작업

- git fetch : 원격 저장소의 내용을 로컬로 가져오는 것 ( 서버 → 로컬 )
  > 1. 로컬에 없는 커밋을 다운로드
  > 2. 원격 브랜치를 업데이트
    > 원격 브랜치 : 원격 저장소의 브랜치를 추적


- git pull : git fetch + git merge


- git push : 로컬 저장소의 내용을 원격으로 보내는 것 (로컬 → 서버)
  > 1. 원격에 없는 커밋을 업로드
  > 2. 원격 브랜치를 업데이트

 

 

레파지토리 생성, 초기작업

- git clone : 원격 저장소를 복제하는 것 ( 서버 → 로컬 )

  > git clone [레파지토리 주소]

 

- git config : 최초 설정 (각 레파지토리마다 다르게 설정하고 싶으면  --global 대신 --local을 적으면 된다.)

  > git config --global user.name "[사용자 이름]"

  > git config --global user.email "[이메일]"

 

- git remote : 서버를 지정해주는 행위

  > git remote add orgin [레파지토리 주소]

 

 

반응형