2016. 10. 18. (TUE)
L05 Git 이력 되돌리기
test.txt 1번째 전 commit 이력 되돌리기
Git Local Repository (저장소) | HEAD~1 | git reset --soft HEAD~1 | git reset --mixed HEAD~1 | git reset --hard HEAD~1 or git checkout HEAD~1 |
HEAD | ||||
Staging Area(index) | git checkout -f | |||
Working Directory(작업폴더) | git checkout test.txt |
HEAD는 저장소에 현재 commit
HEAD~1은 바로 이전 commit을 의미한다.
git reset --soft HEAD~1
reset --soft는 원하는 commit으로 이동
HEAD를 바로 이전 commit 이력으로 돌린다.
index와 작업 폴더는 변함이 없다.
git diff --cached
index(stage) 영역과 저장소 commit 간의 비교 (“git diff --staged” 명령과 동일)
git checkout -f
현재 HEAD가 가리키는 commit으로 index와 작업 폴더의 내용을 수정한다. (작업 중이던 내용이 있으면 날라가며, 복구 불가!)
git reset --mixed HEAD~1
HEAD가 가리키는 commit과 index(stage)를 선택한 commit으로 변경
HEAD를 바로 이전 commit 이력으로 돌리고 index에 올린다.
작업 폴더는 변함이 없다.
git diff
work directory와 staged 영역 비교
git checkout [file_name]
index에 올라와 있는 프로젝트를 작업 폴더로 돌린다.
git reset --hard HEAD~1 or git checkout HEAD~1
바로 이전 commit 이력을 작업 폴더로 돌린다.
git reset --?? [commit id]
특정 commit 이력으로 작업을 돌린다.
git reset --hard [commit_id] or git checkout [commit_id]
특정 commit 시점으로 되돌린다.
git reset -hard ORIG_HEAD
실수로 reset한 경우 reset을 취소한다.
병합(merge)한 것을 이미 commit 했을 때, 그 commit을 취소.(잘못된 merge를 이미 commit한 경우 유용)
git checkout [branch_name]
지정된 브랜치가 가리키는 commit을 HEAD가 가리키게 한다. (작업 디렉토리의 파일은 그대로 유지됨.)
git checkout -b [branch_name]
새로운 브랜치를 만들고 해당 브랜치를 checkout 한다.
git checkout -b a origin/b
a가지를 만든 후 origin 원격 저장소에 생성되어 있는 b가지 가져오기
git checkout [commit_id] -- [file]
특정 commit 시점의 특정 파일만 되돌린다.
git checkout --[file]
work directory의 변경된 unstaged 파일을 최신 commit된 내용으로 덮어쓴다.(작업 중이던 내용이 있으면 날라가며 복구 불가!!)
git checkout -f [branch]
branch가 가리키는 commit으로 작업 폴더의 파일을 되돌려 놓는다. (작업 중이던 내용이 있으면 날라가며 복구 불가!!)
git reset HEAD [staged_file]
staged file을 unstaged로 변경한다.
git reset HEAD^
최종 commit을 취소. Working Tree는 보존됨. (commit은 했으나 push하지 않은 경우 유용)
git reset HEAD~2
마지막 2개의 commit을 취소. Working Tree는 보존됨.
git reset --hard HEAD~2
마지막 2개의 commit을 취소. index 및 Working Tree는 모두 복원됨.
git revert HEAD
HEAD에서 변경한 내역을 취소하는 새로운 commit 발행(undo commit). (commit을 이미 push해버린 경우 유용)
git diff [commit_id]
HEAD 포인터의 commit 이력과 [commit_id]의 이력을 비교해준다.
git log --oneline --decorate --graph --all
git으로 작업한 모든 이력을 한 줄 그래프로 표현하라
'IT story > Git' 카테고리의 다른 글
L04 Git Remote Repository (0) | 2016.10.21 |
---|---|
L03 Git 실습 (0) | 2016.10.21 |
L02 Git 설치 (0) | 2016.10.21 |
L01 Git 기본 원리 (0) | 2016.10.21 |