기타

[Git] 깃공부3

음그냥 2023. 7. 18. 01:57
728x90
반응형
SMALL

- 출처 : https://www.yalco.kr/@git-github/2-3/

 

 

이 커밋 하나하나가 묻어놓은 타임캡슐(버전)임

이것들을 나중에 파낼때 안에 뭐가 든 건지 미리알게끔 캡슐마다 작업한거 적어서 꼬리표달아 놔야 버전별로 식별쉽고, 프로젝트를 원하는 과거시점으로 돌릴수있음

 

시간을 과거로되돌림 vs 콕찝은 작업만 되돌림

 

 

 

 

RESET

git log
  • 되돌아갈 시점: Add team Cheetas의 커밋 해시 복사
  • :q로 빠져나가기
git reset --hard (돌아갈 커밋 해시)

 

Reset : 한단계전(Add team Cheetas작업단계) 으로 되돌릴려면 해당과거로 돌아간다음 이후 행적은 히스토리에서 지워지는 방식으로 돌아감

아래 명령어로 커밋 내역 확인

 

reset 하기 전 시점으로 복원해보기

백업해 둔 .git 폴더 사용

  • .git 폴더 복원
  • git log, git status로 상태 확인
  • 아래 명령어로 현 커밋 상태로 초기화
git reset --hard
  • 💡 뒤에 커밋 해시가 없으면 마지막 커밋을 가리킴
  • lions.yaml 삭제

- 커밋되지않은거 다 지우고 마지막 커밋의 상태로 돌아가고 싶을때 git reset --hard 씀

- Untracked files  = 새로만들어진 파일

 

 

 

 

 

 

REVERT  (자동으로 커밋까지됨)

git revert (되돌릴 커밋 해시)

Replace Cheetas with Panthers를 콕찝어서 수정할때
이후내역은 유지하면서 Replace Lions with Leopards만 수정하고싶을때

Revert : Replace Cheetas with Panthers 를 삭제하는게 아니라, 이때의 변화를 거꾸로 수행하는 캡슐을 하나 넣음으로써 결과적으로 Add team Cheetas 단계로 돌아가게됨

ex) 추가한게 있으면 삭제하고, 변경한게 있으면 그걸 반대로 수행함

 

굳이 Revert쓰는 이유 ?

=> 이런 프로젝트 내역 하나하나까지 기록으로 남길 필요가 있을때 Revert사용함

=> 이후내역은 유지하면서 수정해야할것만 콕 찝어서 되돌릴수있음

=> 한번 공유가 된 커밋들은 Revert를 사용해서 되돌려야하는점 반드시 기억하기!!!!! (원활한 협업을 위해)

 

 

 


<실습>

 

원래상태

 

원래 git log

 

.git 파일을 다른폴더에 백업해놓고 .git 삭제하면 

.git 삭제후 소스트리 오류뜸
.git 삭제후 vscode에서 git status 소스입력했을때 레퍼지토리없다고 뜸

 

백업폴더에 있던 .git을 원래폴더에 넣으면 처음으로 원복됨

 

 

 

RESET 실습

원래로그

 

 

reset 사용해서 과거로 돌아가기

아래 명령어로 커밋 내역 확인

git log
  • 되돌아갈 시점: Add team Cheetas의 커밋 해시 복사
  • :q로 빠져나가기

 

git reset --hard (돌아갈 커밋 해시)

Add team Cheetas 로 되돌아가짐

 

 

first commit으로 돌아감

 

reset 하기 전 시점으로 복원해보기

백업해 둔 .git 폴더 사용

  • .git 폴더 복원
  • git log, git status로 상태 확인
  • 아래 명령어로 현 커밋 상태로 초기화
git reset --hard
  • 💡 뒤에 커밋 해시가 없으면 마지막 커밋을 가리킴
  • lions.yaml 삭제

 

 

 

 

 

 

revert 로 과거의 커밋 되돌리기

Add George to Tigers의 커밋 해시 구하기

아래 명령어로 revert

git revert (되돌릴 커밋 해시)
  • :wq로 커밋 메시지 저장

- David , George 를 Revert해서 다시 George 빼고 David로 됨

 

 

🎯 Replace Lions with Leopards의 커밋 되돌려보기

  • 이후 leopards.yaml 수정한 내역 때문에 충돌
    • git rm leopards.yaml로 Git에서 해당 파일 삭제
    • git revert --continue로 마무리
    • :wq로 커밋 메시지 저장

Replace Lions with Leopards단계에서 tiger 수정 , leopards 추가, lions 삭제했었고 / Replace Cheetas with Panthers에서 leopards를 수정했었음

=> 이걸 Replace Lions with Leopards단계에서 revert하면 충돌남

 

REVERTING  = 현재 Revert 중이다

 

leopards가 삭제되지않고 컴퓨터에 남아있다고 뜨면서 충돌남, 뭔가 조치를 취해주라는 말임

git 에서 add/rm (add 더하든 remove 빼든) 상황을 해결후에 revert를 컨티뉴해달라는 내용뜸

=> leopards를 삭제후 revert하면됨

git rm leopards.yaml

git rm leopards로 leopards 제거
:wq로 저장

성공적으로 revert 이루어짐

🎯 reset 사용해서 revert 전으로 되돌아가기

 

💡 커밋해버리지 않고 revert하기 (다른내용까지 같이 커밋하고싶을때 사용)

git revert --no-commit (되돌릴 커밋 해시)
  • 원하는 다른 작업을 추가한 다음 함께 커밋
  • 취소하려면 git reset --hard

아직 커밋안됨

이 커밋안된  tigers를 다 지우고 마지막커밋으로 가려고할때 아래처럼 입력하면됨

 

 

- 출처 : 코딩얄코 유튜브 , https://www.yalco.kr/@git-github/2-3/ 코딩얄코 사이트

728x90
LIST

'기타' 카테고리의 다른 글

[Python] 파이썬 설치방법  (0) 2023.12.16
[Replit] 리플릿을 사용해서 온라인으로 코딩하기  (0) 2023.09.12
[Git] 깃공부2  (0) 2023.07.14
[Git] 깃공부  (0) 2023.07.12
[GitHub] 깃허브(GitHub) 연동하기  (0) 2023.04.11