개발/Git

[Git] 자주 쓰는 명령어, 익숙해지자

growing-dev 2023. 1. 13. 22:47

Git 자주 쓰는 명령어

내가 현업에서 Git을 사용하면서 자주 사용하는 순으로 나름대로 정리해 보았다.
실제로 더 디테일한 옵션을 사용하기도 하지만 아래 내용만으로도 대부분의 업무가 가능하고,
브랜치가 엄청 많거나 분단위로 커밋이 발생하는 경우가 아닌 이상 충분하다고 생각한다.

# remote 저장소로부터 git repository를 복사한다.
git clone [remote repo]

# commit history를 보여준다.
git log

# 한줄로 commit 로그를 출력한다.
git log --oneline

# commit 로그 그래프를 보여준다.
git log --graph

# 현재 파일 상태를 표시한다.
git status

# stage 상태와 HEAD를 비교한다.
git diff --staged

# remote 브랜치를 branch name으로 생성하면서 remote branch를 tracking 한다.
git checkout -b [branch name] [remote branch]

# 현재 HEAD에서 name 브랜치를 생성한다.
git branch [name]

# 원격 포함 전체 브랜치 조회한다.
git branch -a

# remote repo를 name으로 저장하면서 등록한다.
git remote add [name] [remote repo]

# remote 저장소를 조회한다.
git remote -v

# directory 모든 파일을 Staging 한다.
git add .

# commit message와 함께 commit 한다.
git commit -m "commit message"

# 최근 commit을 수정한다.
git commit --amend

# remote 저장소로 부터 동기화한다.
git pull

# origin의 상태로 현재 로컬 브랜치의 상태를 동기화한다.
git fetch origin -p

# origin 으로 현재 commit 내역을 push한다.
git push origin

# 특정 commit id 로 현재 파일의 상태를 강제 초기화한다.
git reset --hard [commit id]

# 방금 commit 을 제거하고 직전 HEAD로 초기화한다.
git reset --hard HEAD^

# 현재 수정된 내용 저장한다.
git stash

# 수정된 내용을 불러온다.
git stash pop

# origin/dev 브랜치를 현재 브랜치로 merge한다.
git merge origin/dev

# working directory의 불필요한 파일 제거한다.
git clean

# git history가 전부 저장된 로그 조회한다.
git reflog

# 현재 directory를 git repo로 만든다.
git init

 

일반적인 업무 flow

  • clone, log, status, checkout, branch, remote로 local repo를 세팅하고 코드 수정/추가 작업을 한다.
  • 이때 너무 단순한 업무가 아니라면 가능한 local branch를 새로 만든다.
  • pull, add, commit, push 정도 순서대로 push 하여 GitHub/Gerrit 코드리뷰 단계로 넘어간다.
  • 이때 새로운 브랜치를 만들었다면 push 하려고 하는 remote branch를 제대로 확인해야 한다.
  • push 전에 가능한 rebase 된 상태로 push를 하려고 한다. conflict이 발생하면 local에서 해결하고 push 한다.

 

결론

Git 자주 사용하는 명령어를 정리해 보았다.
사실 이렇게 터미널에서 명령어로 하기보다는 IDE에서 제공하는 Git이나 Sourcetree 등 GUI 툴을 사용하는 경우가 많다.
하지만 다소 느리거나, 사용하지 못하는 환경인 경우에 터미널로 Git을 사용해야 할 때가 종종 있고, Git 자체를 제대로 이해하려면 터미널 명령어를 사용할 줄 알아야 훨씬 수월하게 형상관리가 가능한 것 같다.

반응형

'개발 > Git' 카테고리의 다른 글

[Git] Rebase와 Merge의 차이 by Visualizing-git  (0) 2023.02.02
[Git] 안심하고 commit하자 reflog  (0) 2023.01.13
[Git] GitHub vs Gerrit  (0) 2023.01.09
[Git] 좋은 commit message 작성  (0) 2023.01.08
[Git] 터미널에 Git branch 표시  (0) 2023.01.05