TIL 맨 처음을 어떤 주제로 할까 고민하다가, 사전 학습 패키지에 Git, GitHub 관련 내용이 있길래 자주 쓰는 명령어를 상황별로 정리해봤다.
git init
현재 폴더를 Git 저장소로 초기화한다.
내가 알기로 하위 디렉토리도 전부 깃 트래킹이 적용되는데, init이 되었는지 확인하는 방법은 숨은 파일까지 출력하는 명령어를 사용한다.
ls -a
그러면 아래와 같이 git 관련 파일들을 확인 가능하다.

git clone <저장소 URL>
예시:
git clone https://github.com/username/repository.git
진짜 매번 헷갈리는 명령어.. 물론 깃 포크나 다른 툴을 사용하면 딸깍이긴하다.
git remote add origin <저장소 URL>
연결된 원격 저장소 확인:
git remote -v
원격 저장소 주소 변경:
git remote set-url origin <새로운 저장소 URL>
git status
변경된 파일, 스테이징된 파일, 추적되지 않는 파일을 확인한다.
git diff
스테이징되지 않은 변경 사항을 확인한다.
git diff --staged
스테이징된 변경 사항을 확인한다.
git log
간단하게 확인하려면 다음 명령어를 사용한다.
git log --oneline
브랜치 흐름까지 함께 확인:
git log --oneline --graph --all
git add <파일명>
git add .
git commit -m "커밋 메시지"
예시:
git commit -m "feat: 로그인 화면 구현"
예전에 컨벤션 안지켜서 했던 기억이 있다..
git commit --amend -m "수정할 커밋 메시지"
이미 원격 저장소에 올린 커밋을 수정할 때는 주의해야 한다!
git push origin <브랜치명>
예시:
git push origin main
새로운 브랜치를 처음 올릴 때:
git push -u origin <브랜치명>
이건 몰랐는데, -u 로 설정을 했어야 했다.
-u 옵션을 사용하면 이후부터는 다음 명령어만 입력해도 된다.
git push
git pull origin <브랜치명>
예시:
git pull origin main
git fetch origin
pull은 변경 사항을 가져와 현재 브랜치에 합치지만, fetch는 원격 저장소의 정보만 가져온다.
git branch
원격 브랜치까지 함께 확인:
git branch -a
git branch <브랜치명>
git switch <브랜치명>
git switch -c <브랜치명>
예시:
git switch -c feature/login
이전 방식의 명령어는 다음과 같다.
git checkout -b <브랜치명>
git branch -d <브랜치명>
병합되지 않은 브랜치를 강제로 삭제:
git branch -D <브랜치명>
git push origin --delete <브랜치명>
먼저 변경 사항을 반영할 브랜치로 이동한다.
git switch main
그다음 대상 브랜치를 병합한다.
git merge <브랜치명>
예시:
git merge feature/login
병합 과정에서 충돌이 발생하면 충돌 파일을 수정한 뒤 다시 커밋한다.
git add .
git commit -m "fix: merge conflict 해결"
이건 예전에 깃 & 깃허브를 사용해 프로젝트를 처음 해봤을 때 충돌이 나서 고생한 기억이 있어 혹시 몰라 같이 작성해본다.
git restore <파일명>
아직 커밋하지 않은 변경 사항이 사라지므로 주의한다.
git restore --staged <파일명>
파일의 수정 내용은 유지하면서 스테이징만 취소한다.
git revert <커밋 해시>
공유 브랜치에서는 기존 기록을 제거하는 reset보다 revert를 사용하는 것이 안전하다.
git reset --soft HEAD~1
git reset HEAD~1
git reset --hard HEAD~1
--hard를 사용하면 작업 내용이 삭제될 수 있으므로 신중하게 사용해야 한다.
잘 안 사용하지만, AGENT 코딩할 때 로그로 자주 봤던 명령어들이다.
현재 작업을 커밋하지 않고 잠시 보관할 때 사용한다.
git stash
보관된 목록 확인:
git stash list
가장 최근 작업 복원:
git stash pop
보관된 작업을 유지하면서 복원:
git stash apply
이게 진짜 개꿀인데, GitHub CLI가 설치되어 있다면 터미널에서 Pull Request를 관리할 수 있다.
gh auth login
gh pr create
제목과 내용을 함께 지정할 수도 있다.
gh pr create --title "로그인 기능 구현" --body "로그인 화면과 API 연동을 구현했습니다."
gh pr list
gh pr view <PR 번호>
gh pr checkout <PR 번호>
gh pr merge <PR 번호>
git switch main
git pull origin main
git switch -c feature/login
git status
git add .
git commit -m "feat: 로그인 기능 구현"
git push -u origin feature/login
gh pr create
git switch main
git pull origin main
git branch -d feature/login
태그는 큰 의미가 없다고 생각했으나, 버전 관리를 위해 정말 중요하다고 생각하기도 한다.
| 타입 | 의미 |
|---|---|
feat | 새로운 기능 추가 |
fix | 버그 수정 |
docs | 문서 수정 |
style | 코드 동작과 무관한 형식 수정 |
refactor | 코드 리팩터링 |
test | 테스트 코드 추가 및 수정 |
chore | 설정, 패키지 등 기타 작업 |
design | UI 및 디자인 변경 |
rename | 파일 또는 폴더 이름 변경 |
remove | 파일 또는 코드 삭제 |
예시:
feat: 소셜 로그인 기능 추가
fix: 로그인 실패 시 앱이 종료되는 문제 해결
refactor: 인증 관련 로직을 훅으로 분리
docs: 프로젝트 실행 방법 추가
chore: 사용하지 않는 패키지 제거
물론 다 외울건 아니고, 필요한거만 알고 있고 나머지는 찾아보면서 작업하는게 국룰. 요즘에는 AI가 버전 관리까지 잘해주지만 알긴 알아야한다고 생각한다.
참고로 사람들 대부분 깃관리 툴 + Warp를 사용하는데, 나는 여전히 기본 터미널이 편하다.
다음으로 깃 버전 관리를 하면서 내가 막힌 부분, 의문이 생겼던 부분에 대해 기술하겠다.