2023. 2. 8. 22:31ㆍGit
기본 명령어
- git reset --hard (돌아갈 커밋 해시)
- git reset --hard 뒤에 커밋 해시가 없으면 마지막 커밋을 가리킴
- git revert (되돌릴 커밋 해시)
- git revert --no-commit (되돌릴 커밋 해시)
ㄴ원하는 다른 작업을 추가한 다음 함께 커밋
ㄴ 취소하려면 git reset --hard
- git rm leopards.yaml 파일삭제
- git revert --continue (git revert 시 충돌 났을 때, 추가,삭제 등등으로 해결하고 이어하기 처리)
--주의
.git 일단 백업 해놓을 것
Git에서 과거로 돌아가는 두 방식
- reset : 원하는 시점으로 돌아간 뒤 이후 내역들을 지웁니다.
- revert : 되돌리기 원하는 시점의 커밋을 거꾸로 실행합니다.
revert는 커밋 시점 중 한 한개의 시점만 삭제하고 싶을 때(부분취소) 용이함.
실습
.git 일단 백업 해놓을 것
.git 삭제 전
.git 삭제 후
$ git status
======================================
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
../aa.js
../ad.js
../calendar-19/
../dfd.js
./
../html.html
../yalco/
nothing added to commit but untracked files present (use "git add" to track)
======================================
나는 vsCode 폴더가 .git 파일이여서 이미자와 다르게 뜨는것 같다.
도아니고 좀 결과가 다르게나온다.
git 과거버전으로 이동
$ git log
========================================================
commit 6737dd64b4643376d132a726348c974d89d652cd (HEAD -> main)
Author: dhlee <ldh2481@gmail.com>
Date: Wed Feb 8 00:08:59 2023 +0900
Replace Cheetas with Panthers
commit 1906affed749b327481ceb0b3b75f06a606585f3
Author: dhlee <ldh2481@gmail.com>
Date: Wed Feb 8 00:07:03 2023 +0900
Add team Cheetas
..... (J로 아래이동 , K로 위로이동)
2. reset 사용해서 과거로 돌아가기
아래 명령어로 커밋 내역 확인
- 되돌아갈 시점: Add team Cheetas의 커밋 해시 복사
- :q로 빠져나가기
- reset의 옵션(--hard 등)은 섹션 5에서 다룰 것
돌아갈 부분 1906affed749b327481ceb0b3b75f06a606585f3 복사
끝까지 할 필요는 없고 1906affe 만 해도 충분
$ git reset --hard 1906affed749b327481ceb0b3b75f06a606585f
========================================================
HEAD is now at 1906aff Add team Cheetas
========================================================
git을 초기 깃으로 변경 하고
.git 파일 삭제 후 백업파일로 되돌리기!
파일과 히스토리가 맞지 않음!. git log도 마찬가지
3. reset 하기 전 시점으로 복원해보기
백업해 둔 .git 폴더 사용
- .git 폴더 복원
- git log, git status로 상태 확인
- 아래 명령어로 현 커밋 상태로 초기화
- 💡 뒤에 커밋 해시가 없으면 마지막 커밋을 가리킴
- lions.yaml 삭제
$ git status
========================================================
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
lions.yaml
nothing added to commit but untracked files present (use "git add" to track)
========================================================
reset 이후 lions.yaml 파일은 새로 등록된 파일로 보고있음
lions.yaml 수동 삭제
$ git status
========================================================
On branch main
nothing to commit, working tree clean
========================================================
4. revert 로 과거의 커밋 되돌리기
Add George to Tigers의 커밋 해시 구하기
아래 명령어로 revert
- :wq로 커밋 메시지 저장
$ git revert 71754e1
[main 6ed7c8f] Revert "Add George to Tigers"
1 file changed, 1 insertion(+), 2 deletions(-)
여러글들이 나오는데 :qw 로 저장후 종료 처리
반대로 실행된 것을 볼 수 있음
🎯 Replace Lions with Leopards의 커밋 되돌려보기
- 이후 leopards.yaml 수정한 내역 때문에 충돌
- git rm leopards.yaml로 Git에서 해당 파일 삭제
- git revert --continue로 마무리
- :wq로 커밋 메시지 저장
삭제와 수정이랑 여러가지가 겹쳐서 이슈 발생
$ git revert d1054fa
========================================================
CONFLICT (modify/delete): leopards.yaml deleted in parent of d1054fa (Replace Lions with Leopards) and modified in HEAD. Version HEAD of leopards.yaml left in tree.
error: could not revert d1054fa... Replace Lions with Leopards
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run << 추가하거나 삭제하라고 함.
hint: "git revert --continue". <<아직 모르겠음, 이어가기인가 ?..
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
========================================================
$ git rm leopards.yaml
========================================================
rm 'leopards.yaml'
========================================================
$ git revert --continue
========================================================
[main 1bd28a0] Revert "Replace Lions with Leopards"
3 files changed, 9 insertions(+), 9 deletions(-)
delete mode 100644 leopards.yaml
create mode 100644 lions.yaml
========================================================
:qw 로 마무리
reset 사용해서 revert 전으로 되돌아가기
$ git reset --hard 6737dd6
========================================================
HEAD is now at 6737dd6 Replace Cheetas with Panthers
========================================================
💡 커밋해버리지 않고 revert하기
- 원하는 다른 작업을 추가한 다음 함께 커밋
- 취소하려면 git reset --hard
'Git' 카테고리의 다른 글
5.Git 브랜치 만들기 (0) | 2023.02.12 |
---|---|
4-2.Git 버전 롤백(Source Tree 버전 되돌리기) (0) | 2023.02.08 |
3.Git 버전 업데이트(파일 삭제 수정 추가만) (0) | 2023.02.08 |
Git. 2장 git 저장 제외처리 (0) | 2023.02.07 |
Git. 1장 깃저장소 처리 (0) | 2023.02.07 |