주니어 개발자가 알면 좋은 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

이번에는 git config에 대해 간단하게 정리하였습니다. 이 글은 지속적으로 업데이트하며 내용을 추가할 예정입니다.
시작하기 앞서 "git init"으로 먼저 저장소를 생성했다는 가정하에 진행합니다.

User 정보 기입

내용을 수정하거나 추가할 경우 변경한 사람이 누구인지 기록하기 위해 사용자의 정보를 입력하며 해당 사람에게 연락할 수 있도록 이메일을 입력합니다.

$ git config --global user.name 유저이름
$ git config --global user.email 유저메일

설정된 값 확인

# 명령어로 확인
$ git config -l

# 파일로 확인
$ cat ~/.gitconfig

git 기본 에디터 설정

git에는 기본 에디터로 nano 에디터를 사용하고 있습니다. 그런데 ... 이 nano 에디터는 사용하기 매우 어려우며 적응하기에도 많이 불편합니다. 그래서 대부분의 많은 개발자 분들이 자신에 맞는 에디터로 변경하고 사용합니다.

 

vim으로 설정하기

# vim으로 설정하기
$ git config --global core.editor vim
$ git config --global diff.tool vimdiff

 

vscode로 설정하기

$ git config --global core.editor "code --wait"

# git diff를 vscode로 설정하기
$ git config --global diff.tool diff-code
$ git config --global difftool.diff-code.cmd 'code --wait --diff $LOCAL $REMOTE'

기본 브런치 설정

기본 브런치가 master로 되어 있지만 요즘에 언어 순화로 master보다 main으로 설정하여 사용하는 추세입니다.

$ git config --global init.defaultBranch main
$ git branch -M main

alias 설정하기

자주 사용하거나 명령어가 너무 길다고 판단될 경우 alias 등록으로 짧고 간단하게 사용할 수 있습니다.

# git status를 st로 짧게 설정
$ git config --global alias.st status

운영체제 별 개행 처리

# window 환경
$ git config --global core.autocrlf true

# linux 환경
$ git config --global core.autocrlf input

config 설정 지우기

# --unset을 이용하여 기존의 설정을 제거할 수 있습니다.
$ git config --global --unset user.name

config 전체 수정하기

# --edit을 이용하여 global 옵션을 전체적으로 수정할 수 있습니다.
$ git config --global --edit

 

'git' 카테고리의 다른 글

주니어 개발자가 알면 좋은 git 명령어 정리  (0) 2023.07.12
git commit template 설정하기  (0) 2023.07.10

commit template을 사용하면 커밋 메시지의 구조와 형식을 일관되게 유지할 수 있습니다. 팀의 구성원들이 동일한 template을 사용하면 commit message가 일관성 있게 작성되어 코드 기록과 변경 내용을 파악하기 쉬워집니다. template을 설정하면 커밋 작성 과정이 자동화되고 개발자는 템플릿에 정의된 섹션에 적절한 내용을 작성하기만 하면 되기 때문에 git commit이 간편해집니다.

1. git commit template 파일 만들기

mkdir ~/git
vim ~/git/.gitmessage

2. ~/git/.gitmessage 파일 작성하기

생성한 파일에 커밋 템플릿을 작성합니다. 

 

# 다음과 같은 형식으로 제목을 작성합니다.
# [type]: 제목
[fea|docs|mis|fix|test|ref]: 제목

# 설명을 입력합니다.
describe:

#=========================
# fea : 새로운 기능 추가
# docs : 문서 수정
# mis : 실수로 빼먹은 내용
# fix : 버그 수정
# test : 테스트 코드
# ref : 코드 리팩토링
#=========================

3. 작성한 파일 적용하기

Git의 commit.template 설정을 업데이트합니다.

git config --global commit.template ~/git/.gitmessage

위 명령어는 ~/git/.gitmessage.txt 파일을 전역 설정으로 사용하도록 Git에 알려줍니다. --global 옵션을 사용하면 현재 사용자의 전역 Git 설정에 영향을 미치게 됩니다. 이제 git commit 명령어를 실행하면 설정한 템플릿이 기본적으로 열리며, 해당 템플릿에 따라 커밋 메시지를 작성할 수 있습니다.

 

'git' 카테고리의 다른 글

주니어 개발자가 알면 좋은 git 명령어 정리  (0) 2023.07.12
git config  (0) 2023.07.11

+ Recent posts