[Git] 기본 사용법
2022. 3. 23. 04:02ㆍCSE/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하는 대신 커밋 하나만 브랜치에 반영하는 것 |