주니어 개발자가 알면 좋은 git 명령어에 대해 간단하게 정리했습니다. 이 글을 간단하게 정리하였기 때문에 보고 배운다기보다는 이 글을 통해 이러한 명령어가 있다는 것을 알고 해당 명령어로 구글링, chatGPT 또는 "git help 명령어"를 통하여 보다 더 자세한 내용을 확인하세요.
git init
로컬 저장소를 생성합니다.
# 로컬 저장소 만들기
git init
git status
현재 브런치의 변경된 상태를 출력합니다.
# 작업 디렉토리 상태 확인하기
git status
파일을 Stage에 추가하기
변경된 파일을 스태이지에 추가합니다.
# 파일을 스태이지에 올리기
git add
# 파일을 스태이지에 올림
git add 파일명
# 모든 변경사항을 스태이지에 올림
git add .
파일을 Stage에서 제거하기
파일을 Stage에서 제거하고 워킹 디렉토리에 변경 사항은 그대로 유지합니다.
# 해당 파일을 스태이지에서 제거합니다.
git reset 파일명
# git 2.23 이상 버전에서 새롭개 추가된 명령어 방식의 스태이지 제거 방법
git restore --staged 파일명
# 최소 생성으로 커밋한 내역이 없을 경우에 스태이지 제거 방법
git rm --cached 파일명
예전의 git에서는 명령어의 의미가 모호한 문제가 있었습니다. 그래서 요즘 버전에서는 restore라는 명령어가 추가되어 명령어를 명확하게 분리하도록 가이드하고 있기 때문에 스태이지에서 대상을 제거할 때는 reset보다는 restore를 사용하는 것을 권장하고 있습니다.
git commit
스태이지에 추가된 변경사항을 브런치에 커밋하여 적용합니다.
# 변경된 스태이지 브런치에 커밋하기
git commit
# 해당 메시지로 커밋하기
git commit -m "(메시지)"
# 변경 사항을 스태이지에 올리고 커밋 메시지로 커밋하기
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 |