git log
- 현재 브랜치에서 지금까지 발생한 커밋을 최신의 것이 위에 놓이도록 순서대로 보여준다.
- 마지막으로 언제 어떤 작업을 했었는지, 커밋 메시지의 작성 convention이 어떻게 되는지 등을 확인할 수 있다.
- Git Bash(Windows)에서는
q
를 입력하여 탈출할 수 있다.
- 꽤 자주 사용하는 명령이다.
git log --graph
- 그래프 형식으로 브랜치의 흐름을 좀 더 자세하게 볼 때 유용하다.
git log --all --decorate --oneline --graph
- 그래프 형식으로 아주 예쁘게 브랜치의 흐름을 그려준다.
git diff
git add
를 아직 하지 않은 상황에서 수정된 파일이 있다면, 마지막 커밋과 현재 로컬 작업 환경 사이의 변경사항을 확인할 수 있다.
- 아무 변경사항이 없으면 아무 것도 출력되지 않는다.
- 패치노트 작성(변경사항 정리) 시 유용하다.
git diff --staged
git add
를 이미 한 상황에서, 마지막 커밋과 현재 Git이 추적하고 있는(add
된) 파일들 사이의 변경사항을 확인할 수 있다.
git diff [비교할 이전 브랜치 이름 또는 커밋 번호] [비교할 이후 브랜치 이름 또는 커밋 번호]
- 두 브랜치(혹은 커밋) 사이에 이루어진 변경사항을 확인할 수 있다.
- 마이너스(-)가 붙은 줄은 이전 커밋(앞의 인자)에 있는 내용이고, 플러스(+)가 붙은 줄은 이후 커밋(뒤의 인자)에 있는 내용이다.
- 커밋 번호를 입력할 때에는
27a1e120c15aab3ae7d415941d86a2d2a6a0d815
처럼 전부를 입력해도 되지만, 앞의 7자리인 27a1e12
만 입력해도 대부분의 경우 잘 동작한다.
- 꼭 7자리일 필요는 없다. 더 짧게
27a1
처럼 입력해도 다른 커밋과 중복되지 않으면(구분 가능하면) 잘 동작한다.
git rm [삭제할 파일 경로]
- 특정 파일을 로컬 작업 환경 및 로컬 레포지토리에서 삭제할 수 있다.
- 파일이 아닌 폴더를 삭제할 때에는
git rm -r [삭제할 폴더 경로]
를 입력한다. 이때 해당 폴더 안의 하위 폴더 및 파일들도 함께 삭제된다.
- 위험한 명령이므로 신중하게 사용해야 한다.
git clone [원격 레포지토리의 SSH 또는 HTTPS 주소 붙여넣기]
- 다른 사람의 public 원격 레포지토리에서 코드 전체를 내려받을 때 사용한다.
git clone
명령은 다음 명령들을 모두 입력한 것과 거의 비슷한 동작을 하는 명령이다.
git init
git remote add origin [레포지토리 SSH 주소]
git fetch origin
git pull origin main
git branch --set-upstream-to=origin/main main
(원격 브랜치 main
를 자동으로 추적하도록 하는 명령)
- 추가로 원격 레포지토리에 있는 모든 브랜치를 자동으로 추적하도록 해준다.
git clone
에 익숙해지면 처음 레포지토리를 가져올 때 위의 귀찮은 명령들(init
, remote add
, fetch
, pull
등)을 전부 입력하지 않아도 된다.
git clone
관련 공식 문서 및 한글 문서를 참조하면 좋다.
git remote -v
- 로컬 레포지토리가 어떤 원격 레포지토리와 연결되어 있는지 확인할 수 있다.
git remote show origin
- 어떤 원격 브랜치가 추적되고 있는지,
git pull
과 git push
가 로컬과 원격 사이에 어떻게 연결되어 있는지 자세히 확인할 수 있다.
git merge [머지할 브랜치 이름]
- 현재 브랜치에 반영되지 않은, 머지할 브랜치의 커밋들을 현재 브랜치에 병합한다.
- 머지 방식에 따라 "fast-forward", "recursive" 등의 전략이 존재한다.
- fast-forward: 현재 브랜치에는 새로운 변경사항이 없고 머지할 브랜치가 현재 브랜치보다 앞서나간(새 변경사항이 추가된) 상황에서 Git이 머지하는 전략.
- recursive: 현재 브랜치의 특정 과거 커밋이 두 브랜치의 공통 조상이지만, 현재 브랜치와 머지할 브랜치가 해당 커밋 이후에 서로 다르게 변경된 경우
- 두 브랜치에서 건드린 부분(파일)이 서로 다르면 문제 없이 머지된다.
- 두 브랜치에서 건드린 부분 중 공통된 부분이 있으면 머지 컨플릭트가 난다.
- 자세한 내용은 여기를 참조하면 좋다.
git rebase [리베이스할 브랜치 이름]
git merge
와 유사하지만 조금 다른 명령
- 심화 과정이므로 본 문서에서는 자세히 설명하지 않는다.
- 자세한 내용은
git rebase
관련 문서들을 검색해보면 좋다.