Git 명령어 정리: 초보부터 고급까지 한 번에 배우기!
Git은 소프트웨어 개발의 필수 도구로, 버전 관리를 도와줍니다. 처음 Git을 사용할 때는 기본 명령어로 작업을 시작하고, 이후 고급 명령어를 익히면서 점점 더 강력한 기능을 활용할 수 있습니다.
이 글에서는 Git 기본 명령어부터 시작해 고급 명령어까지 단계적으로 정리했습니다.
1. Git 기본 명령어
1.1 초기 설정
Git을 사용하기 전에 사용자 이름과 이메일 주소를 설정합니다. 이는 커밋을 기록할 때 누가 작업했는지 식별하는 데 사용됩니다.
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
1.2 저장소 초기화 또는 복제
Git을 처음 시작하려면 새 저장소를 생성하거나, 이미 존재하는 저장소를 복제하여 가져올 수 있습니다.
- 새 저장소 생성 (현재 디렉토리에 새로운 Git 저장소를 초기화합니다.)
git init
- 원격 저장소 복제 (원격 저장소에서 코드를 복사해 옵니다.)
git clone <repository-url>
1.3 파일 상태 확인
현재 작업 디렉토리의 상태를 확인하고, 어떤 파일이 변경되었거나 추가되지 않았는지 확인합니다.
git status
1.4 파일 추가 (Staging)
수정하거나 새로 만든 파일을 Git의 스테이징 영역에 추가합니다. 스테이징은 변경 사항을 커밋하기 전에 준비하는 과정입니다.
- 파일 추가
- 설명: git add 로 특정 파일을 스테이지에 추가하고, git add .로 변경된 모든 파일을 스테이지에 추가합니다
git add <file>
git add .
스테이징된 변경 사항 확인 (스테이징된 파일의 변경 사항을 확인합니다.)
git diff --staged
1.5 커밋
스테이징된 변경 사항을 저장소에 기록합니다. 커밋 메시지를 작성하여 변경 사항의 목적을 설명합니다.
- 현재 스테이징된 변경 사항을 커밋하고, 커밋 메시지로 변경 내용을 간단히 설명합니다.
git commit -m "Commit message"
1.6 브랜치 관리
브랜치를 생성하거나 이동하여 독립된 작업 환경을 만듭니다. 이를 통해 서로 다른 기능이나 버그 수정 작업을 분리할 수 있습니다.
- 브랜치 목록 보기
git branch
- 새로운 브랜치 생성
git branch <branch-name>
- 브랜치 변경
git checkout <branch-name>
- 브랜치 생성과 동시에 이동
git checkout -b <branch-name>
- 설명: 브랜치를 생성하여 별도의 작업 공간에서 변경 사항을 관리하고, 나중에 병합할 수 있습니다.
1.7 원격 저장소와 연동
변경 사항을 원격 저장소에 푸시하거나, 원격 저장소에서 최신 상태를 가져올 수 있습니다.
- 변경 사항 푸시 (로컬 브랜치의 변경 사항을 원격 저장소에 반영합니다.)
git push origin <branch-name>
- 변경 사항 가져오기(원격 저장소의 변경 사항을 로컬로 가져옵니다.)
git pull origin
1.8 병합 (Merge)
지정한 브랜치의 변경 사항을 현재 브랜치에 병합합니다.
git checkout main
git merge
1.9 충돌 해결
- 충돌 확인 후 수정
git status
- 수정 후 커밋
git add
git commit -m "Resolve merge conflict"
1.10 로그 확인 방법
커밋 이력을 확인하여 변경 사항을 추적할 수 있습니다.
git log
2. Git 고급 명령어
2.1 Rebase (리베이스)
다른 브랜치의 변경 사항을 현재 브랜치 위에 다시 적용하여 커밋 히스토리를 깔끔하게 정리합니다.
- 기본 리베이스
- 설명: 현재 브랜치를 지정한 브랜치의 최신 커밋으로 재정렬합니다. merge와 유사하지만, 커밋 히스토리를 깔끔하게 유지할 수 있습니다.
``` git rebase <branch-name> ```
- 인터랙티브 리베이스:
git rebase -i <commit-id>
- 설명: 지정한 커밋 이후의 커밋들을 수정하거나, 합치거나, 순서를 변경할 수 있습니다. 이 기능은 git log에서 커밋 ID를 확인 후 실행합니다.
2.2 Squash (스쿼시)
여러 커밋을 하나로 합쳐 깔끔한 히스토리를 만듭니다. 주로 리베이스와 함께 사용됩니다.
git rebase -i HEAD~<N>
2.3 Reset (리셋)
커밋 히스토리를 이전 상태로 되돌리거나, 특정 파일의 변경 사항을 초기화합니다.
- 소프트 리셋:
- 설명: 특정 커밋으로 이동하고 이후의 변경 사항을 스테이징 상태로 유지합니다. 커밋은 되돌리지만 파일의 수정 내용은 남깁니다.
git reset --soft <commit-id>
- 하드 리셋
- 특정 커밋으로 완전히 되돌립니다. 이후의 변경 사항도 함께 삭제됩니다.
git reset --hard <commit-id>
2.4 Cherry-pick (체리픽)
특정 커밋 하나를 선택적으로 현재 브랜치에 적용합니다. 필요한 기능이나 수정만 가져올 때 유용합니다.
git cherry-pick <commit-id>
2.5 Bisect (바이섹트)
버그가 발생한 시점을 찾기 위해 커밋을 이진 검색합니다.
"bad"와 "good" 커밋을 지정하면 Git이 범위를 좁혀서 문제의 커밋을 찾아줍니다.
git bisect start
git bisect bad <commit>
git bisect good <commit>
2.6 Reflog (레플로그)
Git 명령어를 통해 이동했던 커밋 히스토리를 모두 보여줍니다. 실수로 커밋을 잘못 삭제했을 때 되돌아가기에 유용합니다.
git reflog
2.7 Stash (스태시)
작업 중에 변경 사항을 임시로 저장하여 다른 작업을 수행할 수 있습니다. 나중에 스태시에서 저장된 변경 사항을 복구할 수 있습니다.
- 변경 사항 임시 저장:설명: 현재 작업 중인 변경 사항을 임시로 저장해두고, 작업 디렉토리를 깨끗하게 비울 때 사용합니다.
git stash
- 저장된 스태시 목록 보기:
git stash list
- 스태시 복구하기:
git stash apply
설명: 가장 최근에 저장된 스태시를 다시 적용합니다.
- 특정 스태시 복구하기:
git stash apply stash@{index}
설명: stash@{index}를 지정하여 특정 스태시를 적용할 수 있습니다.
2.8 Clean (클린)
트래킹되지 않은 파일들을 제거하여 작업 디렉토리를 정리합니다. -f 옵션은 강제로 삭제합니다.
git clean -f
2.9 Blame
파일의 각 줄에 누가, 언제, 어떤 커밋에서 작성했는지를 확인할 수 있습니다. 코드 리뷰나 디버깅할 때 유용합니다.
git blame <file>
3. 마무리하며
Git은 처음엔 복잡해 보일 수 있지만, 기본 명령어를 익히고 고급 명령어를 하나씩 사용해보면 점점 더 편리하게 느껴질 것입니다.
Git을 잘 활용하면 팀 협업이 더욱 효율적이고 체계적으로 이루어질 수 있습니다.
'Git' 카테고리의 다른 글
Github[info: Github SSH 연결 방법] (0) | 2025.03.15 |
---|---|
git [ 설정 : .gitignore 기본 내용 및 설정 ] (0) | 2022.10.17 |
Github [정보 : Github 뱃지작성방법] (0) | 2022.05.09 |
Git [활용 : 과거버전으로 돌아가기(revert, reset)] (0) | 2021.11.29 |
Git (기초 : git, github는 무었인가?) (0) | 2021.10.18 |