Git 유용한 명령어 정리(필요할 때마다 추가)
16 Jan 2021windows에서도 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 files는 git 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
하는 동시에 commitgit 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개 취소한 뒤 포함됐던 파일들을 stagedgit reset HEAD^~2
: 최신 commit 2개를 취소한 뒤 포함됐던 파일들을 stagedgit reset --soft HEAD^
: 최신 commit 1개를 취소한 뒤 포함됐던 파일들을 unstagedgit 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로 pushgit push -u origin master
: push하는 기본 branch를 origin(원격 저장소)의 master branch로 지정(최초에 한 번만)
+추가 예정
🔹 git pull
$ git pull
$ git pull <repository> <branch>
git pull
: origin 저장소의 변경사항을 가져와 현재 branch에 mergegit pull origin next
: origin 원격 저장소의 next branch를 현재 branch에 merge
+추가 예정
Reference
https://git-scm.com/docs
생활코딩 -지옥에서 온 Git