환경설정
git config --global user.name “이름”
: 유저이름 설정git config -—global user.email “메일주소”
: 메일주소 설정git config user.name
: 설정된 유저이름 확인git config user.email
: 설정된 메일주소 확인git config -—global core.autocrlf input
: (MAC) 줄바꿈 문자열 자동 수정git config -—global core.autocrlf true
: (WINDOW) 줄바꿈 문자열 자동 수정git config -—global alias.cm commit
: git commit 대신 git cm 으로 줄임 (다른 명령어들도 동일한 방식으로 적용할 수 있음)Git 초기화, 삭제
git init
: 해당 프로젝트를 git의 관리 아래에 두도록 초기화 설정 (.git 이라는 숨김폴더와 파일 생성)git rm -rf .git
: .git 폴더를 삭제함으로써, git과 연결을 해제git add {파일명.확장자}
: 해당 파일을 staging area에 등록하겠다. (tracked 상태로 만든다.)git add .
: 폴더 내의 모든 파일을 staging area에 등록하겠다.git rm -—cached {파일명.확장자}
: staging area에 있는 파일을, 다시 untracked 상태로 돌린다.*.properties
: 확장자가 properties인 모든 파일들은 git에 추가하지 않음config/
: config 폴더 안의 파일들을 추가하지 않음config/*.properties
: config 폴더 안의 properties 파일들을 추가하지 않음git status
: git stauts —long 이 실행된다. 상태를 상세히 보여준다.git status -s
: 간략한 정보를 보여준다.git diff
: add 되지 않은 파일의 변경사항을 확인할 수 있다.git diff --cached
: add해서 staging area에 있는 파일들의 변경사항을 확인할 수 있다.git diff -—staged
: 위 명령어와 동일하다.git diff {브랜치1}..{브랜치2}
: 브랜치1과 브랜치2의 차이를 확인할 수 있다.git commit
: 별도의 창이 열리고, Title / Description을 입력할 수 있는 창이 나온다. 입력하면 완료.git commit -m "메시지 내용"
: 현재까지 add된 파일들을 메시지 내용과 함께 commit 한다.git commit -am “메시지 내용”
: add 와 commit을 동시에 한다.git rm {파일명}
: git rm 을 사용할 경우, 파일 삭제 후 add 까지 동시에 진행된다.git mv {파일명} {새로운 이름}
: 파일명 변경 후 add까지 동시에 진행된다.git log
: commit Log 를 간단하게 확인할 수 있다. 가장 위에 있는 것이 최신이다.git log --reverse
: 최신 커밋이 가장 아래로 오도록 뒤집는다.git log -—patch
: 자세한 commit Log를 볼 수 있다. 어떤 파일이 어떻게 변경되었는지 등git log -p
: 위 명령어와 동일git log --oneline
: 한 줄로 커밋 메시지와 커밋을 확인할 수 있다.git log -5
: 최근 5개의 커밋만 보겠다.git log --oneline -5
: 최근 5개의 커밋을 oneline으로 보겠다.git log --author="작성자"
: 해당 작성자의 커밋만 보겠다.git log —-before=”2021-12-25”
: 해당 날짜(2021-12-25) 이전의 커밋만 보겠다.git log -—grep=”커밋메시지”
: 해당 커밋 메시지가 포함된 커밋을 보여준다.git log {파일명}
: 해당 파일의 커밋 로그를 볼 수 있다.git log -p {파일명}
: 해당 파일의 커밋 로그를 자세히 볼 수 있다.git log {브랜치1}..{브랜치2}
: 브랜치1 과 브랜치2 간의 커밋 정보만 확인할 수 있다.git tag {태그명}
: 현재 상태에서, 태그를 추가한다.git tag {태그명} {커밋해시코드}
: 해당 해시코드의 커밋에 태그를 추가한다.git tag {태그명} {커밋해시코드} -am {설명}
: 해당 해시코드의 커밋에 태그와 설명도 추가한다.git tag
: 현재 프로젝트의 모든 태그들을 확인한다.git tag -l “문자열”
: 특정한 문자열을 포함한 태그를 모두 확인한다.git tag -d {태그명}
: 해당 태그를 삭제한다.git push origin {태그명}
: 해당 태그명에 해당하는 커밋을 push 한다.git push origin —tags
: 모든 태그에 해당하는 커밋을 push 한다.git push origin —delete {태그명}
: 해당 태그의 커밋을 삭제한다.git show {커밋해시코드}
: 해당 커밋의 정보를 자세히 확인할 수 있다.git show {커밋해시코드}:{파일명}
: 해당 커밋에서, 해당 파일의 정보만 확인할 수 있다.git show {태그명}
: 해당 태그를 가진 커밋의 정보를 자세히 확인할 수 있다.git branch
: 로컬에 있는 브랜치 정보를 확인한다.git branch -all
: 로컬 및 원격 저장소에 있는 브랜치 정보를 확인한다.git branch {브랜치명}
: 새로운 브랜치를 생성한다.git branch -v
: 각 브랜치의 최신 버전(커밋)을 확인할 수 있다.git branch --merged
: 현재 브랜치와 동일한 (merge 된) 상태의 브랜치를 확인할 수 있다.git branch --no-merged
: 현재 브랜치와 merge되지 않은 별도 작업 branch를 확인할 수 있다.git branch -d {브랜치명}
: 브랜치를 삭제한다.git push origin —-delete {브랜치명}
: 원격 저장소에서 해당 브랜치를 삭제한다.git branch --move {브랜치명} {새로운 브랜치명}
: 새로운 브랜치명으로 브랜치 이름을 변경한다.git switch {브랜치명}
: 해당 브랜치로 이동한다.git switch -C {브랜치명}
: 새로운 브랜치를 만들면서 이동한다.git checkout {태그명}
: 해당 태그명의 커밋 시점으로 이동한다.git checkout {브랜치명}
: 해당 브랜치로 이동한다.git checkout -b {브랜치명}
: 해당 브랜치명의 브랜치를 생성한다.git checkout -b {브랜치명} {태그명}
: 해당 브랜치명의 브랜치를, 태그명과 함께 생성한다.git merge {브랜치명}
: 해당 브랜치의 커밋을 병합한다. fast forward 방식이므로 master 브랜치에 변경사항이 없다면 즉시 병합 후 해당 브랜치를 삭제하며, 병합된 브랜치의 기록은 삭제된다. (master 브랜치에 변경사항이 있다면 no fast forward로 진행된다.)git merge --no-ff {브랜치명}
: 해당 브랜치의 커밋을 병합한다. no fast forward 방식으로, 병합 후에도 해당 브랜치는 삭제되지 않으며 병합되었다는 것이 commit 기록으로 남게된다.git rebase master {브랜치명}
: 브랜치의 파생 지점을, master의 최신 커밋 지점으로 변경한다.git rebase —onto master {브랜치1} {브랜치1-브랜치2}
: 브랜치에서 뻗어나간 브랜치2의 파생지점을 master로 변경해준다. (즉, 브랜치2의 시작지점을 master로 변경한다. 이렇게 하면 브랜치1의 작업 내용이 필요 없을 경우 버릴 수도 있고, 브랜치1보다 브랜치2를 먼저 master에 merge하고 싶을 때 사용할 수 있다.)git rebase -i {커밋해시코드}
: 해당 커밋 이후의 모든 커밋들을 수정할 수 있는 명령어git cherry-pick {커밋해시코드}
: 작업 브랜치에서, 해당 커밋의 내용만 가져올 수 있다. (작업 브랜치에서 merge되지 않은 커밋이 3개 있을 경우, 나머지 2개는 무시하고 1개만 가져올 수 있다.)git stash
: 현재까지의 작업 내용을 임시저장해둔다. 임시저장 후 브랜치를 변경할 수도 있고, 버그를 수정하는데 여러가지 방법을 시도해보고 싶을 때 각각의 방법을 stash로 저장해 둘 수도 있다. 이 때, 새로운 파일이 생성되었을 경우 add 하지 않았다면 stage 되지 않았기 때문에 stash에 저장되지 않는다.git stash -m “{메시지}”
: 해당 메시지로 stash 한다.git stash -u
: 새로운 파일이 있을 경우, 새로운 파일까지 모두 stash에 포함시킨다.git stash list
: stash된 내역을 확인할 수 있다.git stash show {stash ID}
: 해당 stash의 변경사항을 확인할 수 있다.git stash show {stash ID} -p
: stash의 변경사항을 조금 더 자세히 확인할 수 있다.git stash apply {stash ID}
: 해당 stash의 변경사항들을 다시 불러온다.git stash apply
: 가장 최신의 stash 변경사항들을 불러온다.git stash pop
: 가장 최신의 stash 변경사항을 불러오면서, stash 목록에서는 제거한다.git stash drop {stash ID}
: 해당 stash의 변경사항을 버린다.git stash clear
: 모든 stash 리스트를 삭제한다.git stash branch {브랜치명}
: 새로운 브랜치를 생성하면서 stash 변경사항을 적용시킨다.git restore .
: 해당 폴더 내 모든 파일들의 변경사항을 초기화시킨다. (단, 추가된 파일은 지워지지 않기 때문에 git clean -fd
(force directory) 명령어로 삭제해야한다.)git restore {파일명}
: 해당 파일의 변경사항을 초기화시킨다.git restore —staged
: 모든 stage를 취소한다.git restore —staged {파일명}
: 해당 파일의 stage를 취소한다.git commit —amend -m “메시지”
: 최근 커밋의 메시지를 변경한다.git commit —amend
: 수정내용에 변경이 있을 때, 해당 커밋에 덮어쓰기 한다. (push 전에만 가능)git reset {커밋해시코드}
: 해당 커밋으로 초기화하고 working directory로 가져온다.git reset HEAD~2
: 위 명령어와 동일하다. HEAD로부터 2개 앞의 commit으로 초기화한다.git reset --soft HEAD~2
: 해당 커밋으로 초기화하고 staging area에 보관한다.git reset -hard HEAD~2
: 로컬(working directory)에도 저장하지 않고 staging area로도 가져오지 않은 채로 초기화한다.git reflog
: HEAD가 가리키고있었던 로그를 모두 보여준다. 따라서, reset 등을 이용해서 날려버린 내용들을 복구하는데 사용할 수 있다.git revert {커밋해시코드}
: 해당 commit의 변경을 취소하면서, 새로운 commit 기록을 남긴다.git revert --no-commit {커밋해시코드}
: 새로운 commit을 남기지 않으면서 변경을 취소시킨다.git blame {파일명}
: 해당 파일을 누가 언제 어떤 부분을 수정했는지 확인할 수 있음