주니어 개발자가 알면 좋은 git 명령어에 대해 간단하게 정리했습니다. 이 글을 간단하게 정리하였기 때문에 보고 배운다기보다는 이 글을 통해 이러한 명령어가 있다는 것을 알고 해당 명령어로 구글링, chatGPT 또는 "git help 명령어"를 통하여 보다 더 자세한 내용을 확인하세요.
git init
로컬 저장소를 생성합니다.
# 로컬 저장소 만들기
git init
git status
현재 브런치의 변경된 상태를 출력합니다.
# 작업 디렉토리 상태 확인하기
git status
git add
변경된 파일을 스태이지에 추가합니다.
# 파일을 스태이지에 올리기
git add
# 파일을 스태이지에 올림
git add 파일명
# 모든 변경사항을 스태이지에 올림
git add .
git rm
# 해당 파일을 스태이지에서 삭제합니다.
git rm --cahed 파일명
git commit
스태이지에 추가된 변경사항을 브런치에 커밋하여 적용합니다.
# 변경된 스태이지 브런치에 커밋하기
git commit
# 해당 메시지로 커밋하기
git commit -n "(메시지)"
# 변경 사항을 스태이지에 올리고 커밋 메시지로 커밋하기
git commit -am "(메시지)"
git branch
# 브런치 목록 확인하기
git branch
# 브런치 만들기
git branch 브런치
# 브런치 삭제
git branch -d 삭제할브런치
# 현재 브런치를 main 브런치로 설정
git branch -M main
# 원격브런치까지 모두 출력
git branch -a
git checkout
checkout은 너무 많은 기능을 가지고 있어 switch와 restore로 나뉘었습니. 현재는 checkout도 사용이 가능하나 앞으로 switch와 restore사용을 권장합니다.
# 해당 브런치로 체크아웃하기
git checkout 브런치
# 브런치 생성과 동시에 체크아웃하기
git checkout -b 브런치
# 베이스브런치를 지정하여 새로운 브런치 생성하고 checkout하기
git checkout -b 새로운브런치 베이스브런치
# 해당 브런치의 최신 커밋으로 체크아웃
git checkout FETCH_HEAD
# 스태이지에 기록되지 않은 모든 파일을 이전커밋으로 되돌리기
git checkout .
# 스태이지에 기록되지 않은 특정 파일을 이전커밋으로 되돌리기
git checkout -- 파일명
# 특정 커밋해쉬로 되돌리기
git checkout 커밋해쉬
git switch
checkout 명령어의 기능을 분리하여 새롭게 생성된 명령어입니다.
# 해당 브런치로 변경하기
git switch 브런치명
# 브런치를 생성하고 생성한 브런치로 변경하기
git switch -c 새로운브런치
# 현재 브런치의 커밋해쉬로 새로운 브런치 생성하기
git switch -c 새로운브런치 커밋해쉬
# 원격브런치로 switch
git switch -t origin/브런치명
git restore
기존 reset에서 자주 사용되어 새롭게 추가된 내용입니다. 파일을 특정 커밋으로 되돌리거나 스테이지에서 뺍니다.
# 지정한 파일을 최신 커밋 내역으로 되돌리기
git restore 파일명
# 지정한 파일을 특정 커밋으로 되돌리기
git restore --source 커밋해쉬 파일명
# 스태이지에 올라간 파일을 스태이지에서 빼기
git restore --staged 파일명
git log
커밋 목록 조회하며, 브런치의 commit head및 commit hash값을 알 수 있습니다.
# 커밋 목록 조회하기
git log
# 커밋 목록을 한 줄로 조회하기
git log --oneline
# 커밋별 변경 사항 목록 조회하기
git log --patch
# 커밋 목록을 그래프로 조회하기
git log --graph
# 모든 브런치 커밋 목록 조회하기
git log --branched
git tag
# 태그 추가하기 (릴리즈 버전)
git tag (태그)
# 커밋에 태그 추가하기
git tag (태그) (커밋)
# 태그 목록 조회하기
git tag --list
# 태그 삭제하기
git tag --delete
git diff (commit)
# 최근 커밋과 작업 디렉토리 비교하기
git diff
# 최근 커밋과 스태이지 비교하
git diff --staged
# 커밋과 커밋끼리 비교하기
# HEAD : 현재 브런치의 최신 커밋
# HEAD^ 또는 HEAD~1 : 현재 브런치의 최신 커밋에 바로 이전 커밋
# HEAD^^ 또는 HEAD~2 : 현재 브런치의 최신 커밋에 2개 이전 커밋
# 예제 최신 커밋과 바로 이전의 커밋 비교하기
git diff HEAD HEAD^
git diff (branch)
# 브런치끼리 비교하기
git diff 기준브런치 비교할브런치
# 원격 저장소 브런치와 비교하기
git diff main origin/main
git reset
이전 커밋으로 돌아간다.
# 되돌릴 커밋으로 되돌아가기
git reset (되돌아갈 커밋)
# 커밋만 되돌리기
git reset --soft (되돌아갈 커밋)
# 바로 이전으로 커밋만 되돌리기
git reset --soft HEAD^
# 스태이지까지 되돌리기
git reset --mixed (되돌아갈 커밋)
# 작업 디렉토리까지 되돌리기
git reset --hard (되돌아갈 커밋)
git revert
revert는 최소한 커밋을 명시한다 revert는 새로운 커밋을 생성하기 때문에 커밋 메시지를 입력해야 한다.
(이전의 커밋기록으로 새로운 커밋을 생성)
# 해당 커밋을 취소한 새로운 커밋을 추가
git revert 최소할커밋
git stash
워킹 디렉토리의 변경사항을 커밋은 하지 않고 임시 저장하는 것을 stash라고 합니다.
# 변경 사항 저장하기
$ git stash save -m "test"
# stash list 확인하기
$ git stash list
# stash 자세히 보기
$ git stash show stash@{인덱스}
# 저장되어 있는 stash 적용하기
$ git stash apply stash@{인덱스}
# stash 삭제하기
$ git stash drop stash@{인덱스}
# 인덱스 번호 0번을 apply하고 drop 두개를 한번에 수행하기
$ git stash pop
# 모든 stash list 삭제하기
$ git stash clear
git merge
타겟 브런치의 모든 커밋내역을 현재 브런치로 가져옵니다.
# 현재 브런치에 명시한 브런치 병합하기
git merge 타겟브런치
# 타겟브런치의 커밋 내역을 하나로 통합하여 머지하기
git merge --squash 타겟브런치
# conflict 발생 시 vim으로 해당 파일을 열어서 충돌을 해결하고
# git add를 진행한 뒤에
# --continue로 진행
git merge --continue
# conflict 발생 시 무시하기
git merge --abort
git rebase
rebase는 해당커밋의 기록을 타겟브런치(main 브런치)의 뒤로 재배치합니다.
마지막으로 merge를 수행해야 합니다.
# 1. 현재 test 브런치라는 가정하에 진행
# 2. test 브런치를 main으로 rebase 수행
git rebase main
# 3. main 브런치로 이동
git switch main
# 4. test 브런치와 merge
git merge test
git cherry pick
다른 브런치에 있는 커밋을 선택하여 현재 브런치에 적용하는 명령어
# 다른 브런치의 커밋해쉬를 통해 현재 브런치에 적용하기
git cherry-pick 커밋해쉬
# 다른 브런치의 커밋해쉬 여러개 가져오기
git cherry-pick 커밋해쉬1 커밋해쉬2
# 다른 브런치에 연속적으로 되어 있는 커밋해쉬 현재 브런치에 적용하기
# 총 5개의 커밋해쉬가 적용된다.
git cherry-pick 커밋해쉬1..커밋해쉬5
# conflict 발생 시 해결하고 cherry-pick 적용하기
git cherry-pick -continue
# conflict 발생 시 중단하기
git cherry-pick -abort
# 머지커밋을 cherry-pick하기
git cherry-pick -m 1 머지커밋해쉬
git clone
# 원격 저장소를 복제합니다.
git clone 원격저장소
# 원격 저장소를 해당 경로로 복제합니다.
git clone 원격저장소 로컬경로
git remote
# 원격 저장소 목록을 확인합니다.
git remote
# 원격저상소 목록과 경로를 확인합니다.
git remote -v
# 현재 로컬 저장소와 원격 저장소를 연결합니다. 일반적으로 원격저장소명을 origin으로 많이 한다.
git remote add 원격저장소명 원격저장소경로
git remote add origin 원격저장소경로
# 원격저장소 이름을 변경합니다.
git remote rename 수정전 수정후
git push
# 로컬 브런치에 있는 내용을 원격 저장소 브런치에 푸시합니다.
git push 원격저장소명 원격브런치
git push origin 원격브런치
# -u 옵션을 추가하면 이때의 원격저장소와 브랜치명을 다음부터는 git push만 입력해도 푸시가 됩니다. (pull 또한 같음)
git push -u origin 원격브런치
# 원격브런치 삭제
git push origin --delete 브런치
git fetch
# 원격저장소의 모든 내용을 가졍옵니다. 정보만 가져오고 로컬 브런치에 머지는 하지 않습니다.
git fetch
git pull
# 원격저장소에 가져와서 로컬 브런치에 머지합니다.
git pull
'git' 카테고리의 다른 글
git config (0) | 2023.07.11 |
---|---|
git commit template 설정하기 (0) | 2023.07.10 |