개발 기록 남기기✍️

Git 기초 (2) - Git 시간 여행하기 본문

기초 지식/git

Git 기초 (2) - Git 시간 여행하기

너해동물원 2022. 12. 9. 10:55

1. 변화를 타임캡슐에 담아 묻기

1-1. 프로젝트의 변경사항들을 타임캡슐(버전)에 담기

변경사항 확인

git status

  • 추적하지 않는(untracked) 파일 : Git의 관리에 들어간 적 없는 파일

 

파일 하나 담기

git add tomatos.yaml

  • git status로 확인

 

모든 파일 담기

git add .

  • git status로 확인

1-2. 타임캡슐 묻기

아래 명령어로 commit

git commit

  • Vim 입력 모드로 진입

 

작업Vi 명령어상세

입력 시작 i 명령어 입력 모드에서 텍스트 입력 모드로 전환
입력 종료 ESC 텍스트 입력 모드에서 명령어 입력 모드로 전환
저장 없이 종료 :q  
저장 없이 강제 종료 :q! 입력한 것이 있을 때 사용
저장하고 종료 :wq 입력한 것이 있을 때 사용
위로 스크롤 k git log등에서 내역이 길 때 사용
아래로 스크롤 j git log등에서 내역이 길 때 사용

FIRST COMMIT 입력한 뒤 저장하고 종료

 

커밋 메시지까지 함께 작성하기

git commit -m "작성할 메시지"

git log나 소스트리로 확인

  • 종료는 :q

1-3. 변경사항들을 만들고 버전 업데이트하기.

git add .

  • 변경된 모든 내용 추가. git status로 확인.

add와 commit을 한번에

git commit -am "메시지"

  • 새로 추가된(untracked) 파일이 없을 때 한정

2. 과거로 돌아가는 두 가지 방법

Git에서 과거로 돌아가는 두 방식

  • reset : 원하는 시점으로 돌아간 뒤 이후 내역들을 지운다.
  • revert : 되돌리기 원하는 시점의 커밋을 거꾸로 실행한다.

 

2-1. reset 사용해서 과거로 돌아가기

git log로 커밋 내역 확인

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

 

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

git reset --hard

  • 뒤에 커밋 해시가 없으면 마지막 커밋을 가리킴

 

2-2. revert로 과거의 커밋 되돌리기

git revert (되돌릴 커밋 해시)

  • :wq로 커밋 메시지 저장

 

충돌한 내역이 있을 때

  • git rm leopards.yaml로 충돌을 일으킨 항목을 삭제하거나 파일 내에서 충돌 일으킨 부분 수정 후
  • git revert --continue로 마무리
  • :wq로 커밋 메시지 저장

 

커밋해버리지 않고 revert하기

git revert --no-commit (되돌릴 커밋 해시)

  • 원하는 다른 작업을 추가한 다음 함께 커밋
  • 취소하려면 git reset --hard