반응형
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 |