[Git] 기본 사용법

2022. 3. 23. 04:02CSE/ETC

1. 기본 명령어

명령어 결과
git init Git 저장소로 지정함, GIt으로 관리하겠다 선언
git add 변경된 파일들 중 올리길 원하는 것을 선택 ( . 을 붙이면 변경된 모든 파일)
git commit -m "커멋메세지" 커밋 메세지와 함께 커밋
git remote add 현재 저장소와 연결할 GitHub 저장소 주소 알려주기
git push 커밋까지 완료한 변경 파일들을 GitHub에 업로드하기
git clone 원격 Git 저장소 복제
git pull "원격저장소 별명" "브랜치" 원격 저장소의 특정 브랜치의 변경사항을 받아오기
(연결된 원격 저장소가 하나인 경우 대부분 origin)

 

 

2. Git이 추적하는 파일의 4가지 상태

상태
추적 안됨 아예 처음보는 파일이다! (아직 깃에 올라오지 않은 파일)
수정 없음 깃에 있는 버전과 다른 부분이 없다
수정함 깃에 있는 버전과 다른 부분이 있다
스테이지 됨 수정함, 추적안됨 상태의 파일이 스테이지에 올라옴

 

 

3. 브랜치 (branch)

- 여러명이 하나의 파일을 동시에 고친다면 충돌이 날 수 있다.

- 따라서 브랜치를 사용해서 각자 고친 뒤, 나중에 충돌이 나면 명시적으로 충돌을 해결할 수 있다.

- 제일 기본 브랜치는 'main'으로 레포지토리를 만들면 자동 생성된다.

명령어
git branch "브랜치 이름" 해당 이름을 가진 브랜치를 만들어라
git switch "브랜치 이름" 해당 이름을 가진 브랜치로 이동해라

 

4. 머지 (merge) & Conflict

- 내 브랜치에 다른 브랜치의 최신 상황을 합치는 것

명령어
git merge "브랜치이름" 해당 이름을 가진 브랜치의 최신 상태 가져와서 반영하겠다.

=> 이 때, 충돌(Conflict)이 발생할 수 있다.

=> 수동으로 어떤 부분을 버리고 어떤 부분을 취할지 고쳐줘야 한다.

 

 

5.  포크 (fork)

- 다른 레포지토리를 통째로 복제하는 것

* 포크 vs 브랜치

- 브랜치는 하나의 원본 저장소에서 나누기 때문에, 코드 커밋 이력을 편하게 볼 수 있다. 하지만 브랜치가 많아지면 관리하기가 힘들다.

- 포크는 저장소를 나누기 때문에, 원본 저장소에 영향을 미치지 않고 코드를 수정할 수 있다. 따라서 오류가 나도 걱정없다! 하지만 원본 저장소의 커밋 이력을 보려면 따로 주소를 추가해줘야한다.

 

6. Pull Request

- 포크를 통해 원본 저장소의 코드를 수정한 후, 원본 저장소에 해당 코드를 반영하기 위해 Pull Request (PR)을 통해 Merge 요청을 보낸다.

=> 원본 저장소의 관리자가 이를 보고 수정이 필요하면 change request를 보낼 수 있다.

 

 

7. 그 외의 여러 기능들

기능 이름 기능
amend 가장 최근 커밋에 반영되지 않은 업데이트를 추가하는 것
stash 하던 작업을 커밋하는 대신 잠깐 임시 저장하는 것 (추적 안됨 상태는 불가능)
reset 옛날 커밋으로 브랜치를 되돌리기
revert 가장 최근 커밋을 취소하는 것
cherry-pick 당장 모든 변경사항을 merge하는 대신 커밋 하나만 브랜치에 반영하는 것