liminfo

Git Reference

Git 명령어 레퍼런스

54개 결과

Git Reference 소개

Git 명령어 레퍼런스는 가장 자주 사용하는 Git 명령어를 아홉 가지 카테고리로 정리한 포괄적이고 검색 가능한 치트 시트입니다. 기본 명령(git init, clone, add, commit, status, diff, rm, mv), 브랜치 관리(git branch, checkout, switch, merge, 이름 변경, 삭제), 원격 작업(git remote, fetch, pull, 업스트림 추적을 포함한 push), 스태시(git stash, pop, list, apply, drop), 로그 및 히스토리 조회(git log --oneline, --graph, -p, git show, git blame), 되돌리기(git reset --soft/--hard, git revert, git restore, git clean), 리베이스(git rebase, 인터랙티브 리베이스, abort/continue, cherry-pick), 태그(경량 및 주석 태그, 태그 푸시, 삭제), 설정(전역 사용자 설정, 에디터, 명령 별칭)을 포함합니다.

Git은 세계에서 가장 널리 사용되는 버전 관리 시스템으로, 모든 소프트웨어 개발자, 기술 문서 작성자, 데이터 과학자, DevOps 엔지니어가 매일 그 명령어를 접합니다. 이 레퍼런스는 프로젝트를 전환할 때, git log --oneline --graph --all의 정확한 플래그를 기억해야 할 때, 업스트림 추적 설정 시 git push -u origin의 올바른 구문이 필요할 때, 또는 최근 커밋을 되돌릴 때 git reset --soft와 --hard의 차이를 빠르게 확인해야 할 때 특히 유용합니다.

항목은 초보자가 기본 카테고리부터 시작해 리베이스, 스태시, cherry-pick 같은 고급 주제로 점진적으로 나아갈 수 있도록 구성되어 있습니다. 각 항목은 가장 일반적인 플래그가 포함된 명령어, 효과에 대한 한 줄 설명, 바로 실행할 수 있는 셸 예제를 포함합니다. Git 2.23에서 도입된 새로운 git switch 및 git restore 명령어도 기존 git checkout 방식과 함께 다루어 다양한 Git 버전을 사용하는 개발자 모두에게 도움이 됩니다.

주요 기능

  • 기본: git init, clone, add(스테이징), commit -m, status, diff/diff --staged, rm, mv
  • 브랜치: git branch(목록/생성/삭제/이름 변경), checkout -b, switch, merge
  • 원격: git remote -v/add, fetch(병합 없음), pull, push, 업스트림 추적을 위한 push -u
  • 스태시: git stash, stash pop, stash list, stash apply(유지), stash drop
  • 로그: git log --oneline, --graph, -p(diff), git show, 줄별 작성자 확인을 위한 git blame
  • 되돌리기: git reset --soft(변경사항 유지), --hard(모두 삭제), git revert(새 커밋), git restore, git clean -fd
  • 리베이스: git rebase, rebase -i(인터랙티브 스쿼시/편집), abort/continue, cherry-pick
  • 태그 및 설정: 경량 태그 vs 주석 태그, push --tags, 전역 user.name/email, 별칭

자주 묻는 질문

git fetch와 git pull의 차이는 무엇인가요?

git fetch는 원격 저장소의 변경사항을 로컬 원격 추적 브랜치(예: origin/main)에 다운로드하지만 현재 작업 브랜치는 수정하지 않습니다. git pull은 git fetch와 git merge(또는 --rebase 플래그를 사용하면 git rebase)의 조합으로, 원격 변경사항을 현재 브랜치에 즉시 통합합니다.

git reset --soft, --mixed, --hard의 차이는 무엇인가요?

git reset --soft HEAD~1은 HEAD 포인터를 되돌리지만 모든 변경사항을 스테이징 상태로 유지합니다. git reset(기본값인 --mixed)은 HEAD를 되돌리고 변경사항을 스테이징 해제하지만 작업 디렉터리에는 유지합니다. git reset --hard는 HEAD를 되돌리고 스테이징된 변경사항과 작업 디렉터리의 변경사항을 모두 삭제합니다. 삭제된 변경사항은 쉽게 복구할 수 없으므로 주의해서 사용하세요.

git reset 대신 git revert를 사용해야 하는 경우는 언제인가요?

공유 원격 저장소에 이미 푸시된 커밋을 되돌려야 할 때 git revert를 사용하세요. git revert는 변경사항을 역전시키는 새 커밋을 생성하여 전체 히스토리를 보존합니다. git reset은 아직 푸시되지 않은 로컬 커밋에만 사용하세요. reset 후 강제 푸시하면 히스토리가 재작성되어 다른 협업자에게 문제가 생깁니다.

git stash는 무엇이고 언제 사용하나요?

git stash는 커밋되지 않은 변경사항(스테이징된 것과 스테이징되지 않은 것 모두)을 임시로 저장하고 작업 디렉터리를 마지막 커밋 상태로 되돌립니다. 미완성 작업을 커밋하지 않고 빠르게 브랜치를 전환해야 할 때 사용하세요. git stash pop으로 가장 최근 스태시를 다시 적용하거나, git stash apply stash@{0}으로 목록에서 삭제하지 않고 특정 스태시를 적용할 수 있습니다.

git cherry-pick은 무엇이고 git merge와 어떻게 다른가요?

git cherry-pick은 특정 커밋이 도입한 변경사항을 현재 브랜치에 적용하여 새 해시를 가진 새 커밋을 생성합니다. 전체 브랜치를 병합하지 않고 특정 수정 사항이나 기능만 가져오고 싶을 때 사용합니다. git merge는 소스 브랜치의 모든 커밋을 대상 브랜치에 통합합니다.

인터랙티브 리베이스(git rebase -i)는 무엇에 사용하나요?

git rebase -i HEAD~n은 마지막 n개의 커밋을 보여주는 인터랙티브 편집기를 엽니다. 여러 커밋을 하나로 합치거나(squash), 커밋 순서를 변경하거나, 커밋 메시지를 편집하거나, 불필요한 커밋을 삭제하거나, 커밋을 분리할 수 있습니다. 주로 피처 브랜치를 메인 브랜치에 병합하기 전에 지저분한 커밋 히스토리를 정리하여 더 깔끔하고 읽기 쉬운 히스토리를 만들 때 사용합니다.

git checkout과 git switch의 차이는 무엇인가요?

git switch는 브랜치 전환을 위해 특별히 설계된 최신 명령어(Git 2.23+)로 의도를 더 명확하게 표현합니다. git switch main은 기존 브랜치로 전환하고, git switch -c new-branch는 새 브랜치를 생성하고 전환합니다. git checkout은 브랜치를 전환할 수 있지만 파일 체크아웃, 분리된 HEAD 등 다른 용도도 많아 초보자에게 혼란스러울 수 있습니다. 두 명령어 모두 사용 가능하지만 브랜치 작업에는 git switch가 권장됩니다.

Git을 처음 설정하려면 어떻게 하나요?

최소 설정은 이름과 이메일을 전역으로 설정하는 것입니다: git config --global user.name "Your Name"과 git config --global user.email "you@example.com". 이 값은 작성하는 모든 커밋에 표시됩니다. 선택적으로 git config --global core.editor "vim"으로 기본 에디터를 설정하고, git config --global alias.co checkout으로 단축키를 만들 수 있습니다.