자주쓰는 Git 명령어 정리

신석진( Seokjin Shin)·2023년 2월 8일

GUI 툴도 좋지만 CLI로 하는 것이 작업 전환시에 속도가 더 높은 느낌을 받아서 VScode에 터미널을 이용해서 git 작업을 하고 있습니다. 그걸 기록하고자 합니다.

# 2025-07-23 최신화
# 해당 스크립트를 사용하면 아래에 설명한 자주쓰는 설정들을 모두 반영한다.
# 덮어써지므로 꼭 현재 git의 설정을 백업하자.
curl -fsSL https://setup-git.ga-ut.com/ | bash
# 전반적인 옵션
# 아래의 옵션을 주게 되면 다른 브렌치와의 충돌을 기준에 맞춰서 해결할 수 있다.
-X ${ours|theirs}
# 브랜치 목록 확인
git branch

# 브랜치 삭제
git branch -d ${branch_name}

# 원격 삭제 브랜치 제거
git remote update --prune
# 해당 브랜치로 HAED 변경
git switch ${branch_name}

# 현재 브랜치에서 파생된 브랜치를 만들면서 HEAD 변경
git switch -c ${branch_name}
# 원격의 브랜치 정보를 불러온다.
git fetch --all
# log의 옵션을 편하게 쓰기 위해서 전역 설정
git config --global alias.adog "log --all --decorate --oneline --graph"

# git 로그를 그래프로 보기 위해서 쓴다.
git adog

# 커밋에서 다른 부분을 확인하기 위해 사용한다.
git diff ${commitA} ${commitB}

# 특정 커밋의 전체 내용을 보기 위해 사용한다.
git show ${commit}

# 특정 커밋의 특정 파일의 내용을 보기 위해 사용한다.
git show ${commit}:${file_path}
# git config pull.rebase false 로 rebase 여부를 끄고 사용한다.
# 해당 브랜치의 최신 변경 사항을 가져온다.
git pull origin ${branch_name}
# 변경사항을 강제로 초기화 할 때 쓴다.
git reset --hard ${branch_name | commit_id}

# 브랜치 안의 커밋을 하나로 합칠 때 주로 쓴다.
# 기능 개발이 완료된 브랜치에서 주로 쓴다.
git reset --soft HEAD~${commit_count}
# 해당 커밋부터 몇개의 커밋이 있는지 확인할 때 쓴다.
# <commit_count>에 해당 값을 주로 쓴다.
git rev-list --count ${commit}..HEAD
# 병합 커밋을 남기지 않고 그래프 관리할 때 쓴다.
# 보통 기능에 대한 커밋을 하나로 합쳐서 rebase한다.
git rebase ${branch_name}
# 커밋 사항들을 뭉쳐서 병합할 때 쓴다.
git merge --squash ${branch}
# 특정 커밋만 적용하기 위해 사용한다.
git cherry-pick ${commit}

2025-02-10 추가

# rebase시에 자동으로 변경사항을 stash하도록 하는 설정
git config --global rebase.autoStash true

git pull -r # rebase를 활용하여 자동으로 autoStash가능

# push시에 upstream을 따로 명시하지 않아도 자동으로 원격에 브렌치를 생성해주는 설정
git config --global push.autoSetupRemote true

git push -u origin/branch-name # 이거 필요없음
설정 옵션지원 시작 버전설명
rebase.autoStashGit 2.14.0git rebase 시 변경사항을 자동으로 stash 후 다시 적용
push.autoSetupRemoteGit 2.37.0git push 시 upstream 브랜치를 자동으로 설정

2025-06-27 추가
2025-07-10 수정

# 로컬과 origin의 sync를 맞추기 위한 alias
git config --global alias.sync-origin '!bash -c '"'"'
git fetch --prune --tags &&
for branch in $(git branch --format="%(refname:short)" | grep -vE "^(main|master|development|stage)$"); do
  git show-ref --verify --quiet refs/remotes/origin/$branch || git branch -D $branch
done &&
comm -23 <(git tag | sort) <(git ls-remote --tags origin | awk "{print \$2}" | sed "s#refs/tags/##" | sort) | xargs -r git tag -d
'"'"

0개의 댓글