[Git] 실수 되돌리기

Code 2019. 7. 14. 09:30

      - 서버를 이전 상태로 복구



*  상태 보기
git status
git diff
git log
git reflog - 전체를 볼수 있음, 복구에 사용


*  되돌리기
    -  git reset --hard 
git reset --hard HEAD~1
- 최종 커밋 1개 이전 상태로 되돌림
- 파일도 모두 바꿈


//=========================
* HEAD, index, Working directory(work folder)
Git 도구 - Reset 명확히 알고 가기
https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Reset-%EB%AA%85%ED%99%95%ED%9E%88-%EC%95%8C%EA%B3%A0-%EA%B0%80%EA%B8%B0

HEAD : 마지막 커밋 한 상태
   HEAD~ = HEAD~1 = 부모 HEAD
     - 예) HEAD~5 = 현재 HEAD에서 5번 이전 HEAD

index : 커밋 전 상태
     - git add 명령을 한 후
    - stage에 올려진 상태

work folder : 현재 내용


- git commit 를 하면 HEAD, index, work folder 셋이 모두 같아 짐


//=================
< git reset >

* soft
- git reset --soft HEAD~
- HEAD~(부모 HEAD)로 이동
- git commit 이전 상태
- 파일 변화 없음


* mixed
- 기본 옵션
- git reset --mixed HEAD~
- HEAD~(부모 HEAD)로 이동
- git commit 와 git add 이전 상태
- 파일 변화 없음


* hard
- 기본 옵션
- git reset --hard HEAD~
- HEAD~(부모 HEAD)로 이동
- git commit -> git add -> work tree
- 파일 까지 이전 상태로 돌아감
- reflog로 확인하고 다시 복구 가능


//=========================
* git reset --hard 명령후 파일 복구 방법

- 커밋 확인
git reflog

0236c32 HEAD@{14}: commit: 2
1fe4b73 HEAD@{15}: commit (initial): 1


- 복구
gir reset --hard HEAD@{14}




//=====================
* git 완전 초기화
.git 폴더 삭제


git init

 

git add .
git commit -m start

git push -f origin master
    - -f 옵션 : 이미 있는 원격 저장소의 내용을 강제로 바꿈


//=========================
* 바뀐 .gitginore 적용

git rm -r --cached .

다시 add -> commit -> push

//=========================
* 원격 저장소에 잘못 올린 파일, 모든 히스토리에서 삭제
           - 모든 커밋(commit)
https://dev.to/jenninat0r/removing-accidentally-committed-files-from-remote-history-3acj


git filter-branch --index-filter "git rm --cached -f -r --ignore-unmatch 파일이름" --tag-name-filter cat -- --all

git update-ref -d refs/original/refs/heads/master
git reflog expire --expire=now --all
git gc --prune=now

git push origin --force --all



//===============
* git checkout 브랜치
     - 브랜치 변경


//=================
// 참고
Git 도구 - Reset 명확히 알고 가기
https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Reset-%EB%AA%85%ED%99%95%ED%9E%88-%EC%95%8C%EA%B3%A0-%EA%B0%80%EA%B8%B0


https://gmlwjd9405.github.io/2018/05/25/git-add-cancle.html

Posted by 코덴스

댓글을 달아 주세요