본문 바로가기

Git

Git [명령어: Git 명령어 정리]

반응형

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을 잘 활용하면 팀 협업이 더욱 효율적이고 체계적으로 이루어질 수 있습니다.