on1ystar 머릿속을 정리, 기록하는 곳

Git 유용한 명령어 정리(필요할 때마다 추가)



windows에서도 linux 명령어를 사용할 수 있는 git bash 기준


Getting and Creating Projects

🔹 git 시작 & clone

$ git init
$ git clone <저장소 url> [<directory>]
  • git init: 현재 디렉토리에서 버전 관리 시작 → .git 디렉토리 생성
  • git clone <저장소 url> [<directory>]: 현재 디렉토리에 .git 디렉토리를 생성(버전 관리 시작) 후 저장소 내용 복제. directory를 기입해 주면 현재 디렉토리가 아닌 기입한 디렉토리에 복제

로컬 저장소의 git 히스토리를 삭제하고 싶을 때는(버전관리를 다시 시작하고 싶을 때) 모든 정보가 저장되어 있는 .git 파일을 삭제해 주면 된다.

🔹 git config

$ git config --global user.name <관리자 이름>
$ git config --global user.email <관리자 이메일>
  • git config --global user.name <관리자 이름>: 이 버전을 생성한 관리자의 이름(최초에 1번만)
  • git config --global user.email <관리자 이메일>: 관리자 이메일 설정(최초에 1번만)

참고로 위 user.email이 github의 이메일과 동일해야 자동으로 github에서 contributions가 기록됨


Basic Snapshotting

🔹 git add

$ git status
$ git add <파일명>
$ git add --all
  • git status: 현재 디렉토리의 정보를 보여줌

Untracked filesgit add가 되지 않은 파일들로 버전 관리에서 제외되어 있는 파일들

  • git add <파일명>: 버전 관리할 새로운 파일 or 수정된 파일 지정 → stage area에 올리는 작업
  • git add --all: 현재 디렉토리의 모든 파일을 추가

🔹 git commit

$ git commit
$ git commit -m <커밋메세지>
$ git commit -a
$ git commit -am
  • git commit: 생성할 버전에 대한 정보를 작성하고 stage area에 있는 파일들의 버전 생성 → repository에 저장
  • git commit -m <커밋메세지>: commit과 commit massage를 한 번에 입력
  • git commit -a: 변경되거나 삭제된 파일들을 git add하는 동시에 commit
  • git commit -am: 위 두 명령어를 합쳐서 수행

단, -a 옵션은 최소 1번 이상 git에 추적된 (add된) 파일들에만 적용됨(새로 생성한 파일은 빼고 수행하니 주의)

🔹 git reset

$ git reset <file>
$ git reset HEAD^
$ git reset HEAD^~2
$ git reset --soft HEAD^
$ git reset --hard HEAD^
  • git reset <file>: staged 파일을 제거 (add 취소)
    file을 지정하지 않으면 working tree에 있는 모든 파일 취소
  • git reset HEAD^: 최신 commit 1개 취소한 뒤 포함됐던 파일들을 staged
  • git reset HEAD^~2: 최신 commit 2개를 취소한 뒤 포함됐던 파일들을 staged
  • git reset --soft HEAD^: 최신 commit 1개를 취소한 뒤 포함됐던 파일들을 unstaged
  • git reset --hard HEAD^: 최신 commit 1개를 취소한 뒤 포함됐던 파일들을 삭제 → 주의


Branching and Merging

🔹 git branch

$ git branch
$ git branch <branch>
$ git checkout <branch>
$ git branch -d <branch>
$ git merge <branch>
  • git branch: 현재 작업 중인 디렉토리의 branch들을 보여줌
  • git branch <branch>: 새로운 branch 생성
  • git checkout <branch>: 작업할 branch로 변경 (최신 버전에서는 git switch <branch>로 대체되는 중)
  • git branch -d <branch>: branch 삭제
  • git merge <branch>: 현재 branch에 입력한 branch를 병합

🔹 git checkout

$ git checkout <branch>
  • git checkout <branch>: 작업할 branch로 변경 (최신 버전에서는 git switch <branch>로 대체되는 중)

+switch와 checkout을 비교해 추가 예정

🔹 git merge

$ git merge <branch>
  • git merge <branch>: 현재 branch에 입력한 branch를 병합

+추가 예정


Inspection and Comparison

🔹 git diff

$ git diff
$ git diff --cached
$ git diff <commit>...<commit>
  • git diff: 방금까지 작업했던 내용(수정한 것)을 보여 줌
    작업이 길어진 경우나 작업했던 내용이 생각나지 않을 때, 마지막으로 리뷰할 수 있는 방법으로 유용
    git add로 파일을 추적하기 전(stage area에 올리기 전)에 변경사항을 확인하는 방법
  • git diff --cached: stage에 올라가 있는(add된) 파일들의 변경 사항을 보여 줌
    보통 최신 commit과 비교하기 위해 쓰임
    git commit으로 버전을 생성하기 전 에 검토하기 위한 방법

주의해야 할 점은 이 역시 최초에 1회 이상 git에 추적된 (add된) 파일만 적용

  • git diff <commit>...<commit>: 앞 commit을 기준으로 뒤 commit의 변경된 내용 비교

+위 두 명령어의 비교를 위한 추가 설명

[f2.txt]

This is file 2
updated !

“This is file 2”는 최초에 f2 파일 생성 후 add한 내용
“updated !”는 add한 뒤 수정(추가)하고 다시 add하지 않은 내용

🔹 git log

$ git log
$ git log -p
$ git log --branches --decorate --graph
$ git log --branches --decorate --graph --online
$ git log <branch>..<branch>
  • git log: 현재 commit된 로그들 확인
  • git log -p: 모든 commit들의 변경사항을 이전 commit과 비교하며 확인
  • git log --branches --decorate --pretty --graph: branch들의 commit 상태를 보기 쉽게 나타내 줌
  • git log --branches --decorate --pretty --graph --oneline: Author와 Date 등을 생략해 보다 간략하게
  • git log <branch>..<branch>: 두 branch의 차이점


Sharing and Updating Projects

🔹 git remote

$ git remote -v
$ git remote add origin <원격 저장소 url>
  • git remote -v: remote된 원격 저장소 목록 확인
  • git remote add origin <원격 저장소 url>: working directory(로컬 저장소)와 원격 저장소를 연결한 뒤 origin이라는 별칭 부여

🔹 git remote

$ git push
$ git push <repository> <branch>
$ git push -u origin master
  • git push: default 원격 저장소(origin)에 working directory의 최신 commit들을 push(업로드) 후 commit 생성
  • git push origin master: origin 이름의 원격 저장소의 master branch로 push
  • git push -u origin master: push하는 기본 branch를 origin(원격 저장소)의 master branch로 지정(최초에 한 번만)

+추가 예정

🔹 git pull

$ git pull
$ git pull <repository> <branch>
  • git pull: origin 저장소의 변경사항을 가져와 현재 branch에 merge
  • git pull origin next: origin 원격 저장소의 next branch를 현재 branch에 merge

+추가 예정



Reference


https://git-scm.com/docs
생활코딩 -지옥에서 온 Git