IT story/Git

L05 Git 이력 되돌리기

jason719 2016. 10. 22. 00:01

2016. 10. 18. (TUE)

L05 Git 이력 되돌리기

  1. 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


  1. HEAD는 저장소에 현재 commit


  1. HEAD~1은 바로 이전 commit을 의미한다.


  1. git reset --soft HEAD~1

    1. reset --soft는 원하는 commit으로 이동

    2. HEAD를 바로 이전 commit 이력으로 돌린다.

    3. index와 작업 폴더는 변함이 없다.


  1. git diff --cached

    1. index(stage) 영역과 저장소 commit 간의 비교 (“git diff --staged” 명령과 동일)


  1. git checkout -f

    1. 현재 HEAD가 가리키는 commit으로 index와 작업 폴더의 내용을 수정한다. (작업 중이던 내용이 있으면 날라가며, 복구 불가!)


  1. git reset --mixed HEAD~1

    1. HEAD가 가리키는 commit과 index(stage)를 선택한 commit으로 변경

    2. HEAD를 바로 이전 commit 이력으로 돌리고 index에 올린다.

    3. 작업 폴더는 변함이 없다.


  1. git diff

    1. work directory와 staged 영역 비교


  1. git checkout [file_name]

    1. index에 올라와 있는 프로젝트를 작업 폴더로 돌린다.


  1. git reset --hard HEAD~1 or git checkout HEAD~1

    1. 바로 이전 commit 이력을 작업 폴더로 돌린다.

  2. git reset --?? [commit id]

    1. 특정 commit 이력으로 작업을 돌린다.

  3. git reset --hard [commit_id] or git checkout [commit_id]

    1. 특정 commit 시점으로 되돌린다.

  4. git reset -hard ORIG_HEAD

    1. 실수로 reset한 경우 reset을 취소한다.

    2. 병합(merge)한 것을 이미 commit 했을 때, 그 commit을 취소.(잘못된 merge를 이미 commit한 경우 유용)

  5. git checkout [branch_name]

    1. 지정된 브랜치가 가리키는 commit을 HEAD가 가리키게 한다. (작업 디렉토리의 파일은 그대로 유지됨.)

  6. git checkout -b [branch_name]

    1. 새로운 브랜치를 만들고 해당 브랜치를 checkout 한다.

  7. git checkout -b a origin/b

    1. a가지를 만든 후 origin 원격 저장소에 생성되어 있는 b가지 가져오기

  8. git checkout [commit_id] -- [file]

    1. 특정 commit 시점의 특정 파일만 되돌린다.

  9. git checkout --[file]

    1. work directory의 변경된 unstaged 파일을 최신 commit된 내용으로 덮어쓴다.(작업 중이던 내용이 있으면 날라가며 복구 불가!!)

  10. git checkout -f [branch]

    1. branch가 가리키는 commit으로 작업 폴더의 파일을 되돌려 놓는다. (작업 중이던 내용이 있으면 날라가며 복구 불가!!)

  11. git reset HEAD [staged_file]

    1. staged file을 unstaged로 변경한다.

  12. git reset HEAD^

    1. 최종 commit을 취소. Working Tree는 보존됨. (commit은 했으나 push하지 않은 경우 유용)

  13. git reset HEAD~2

    1. 마지막 2개의 commit을 취소. Working Tree는 보존됨.

  14. git reset --hard HEAD~2

    1. 마지막 2개의 commit을 취소. index 및 Working Tree는 모두 복원됨.

  15. git revert HEAD

    1. HEAD에서 변경한 내역을 취소하는 새로운  commit 발행(undo commit). (commit을 이미 push해버린 경우 유용)

  16. git diff [commit_id]

    1. HEAD 포인터의 commit 이력과 [commit_id]의 이력을 비교해준다.

  17. git log --oneline --decorate --graph --all

    1. 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