낙서장이자 오답 노트이자 컨닝 페이퍼

Git을 공부해보자: Git으로 시간 여행하기 본문

git & github

Git을 공부해보자: Git으로 시간 여행하기

NangIn 2023. 11. 14. 11:41
인프런에서 "제대로 파는 Git & GitHub - by 얄코"를 보고 정리한 내용입니다!

변경사항을 타임캡슐(버전)에 담아 묻기

git add: 타임캡슐에 담기

1. 현재 변경 사항 확인

 

  • Untracked files: git의 관리에 들어간 적 없는 파일

2. 파일 하나 담기

git add tigers.yaml

3. 모든 파일 담기

git add .

git commit: 타임캡슐 묻기

1. 아래 명령어로 커밋

git commit

// 커밋 메세지까지 함께 작성
git commit -m "FIRST COMMIT"

 

2. vi 입력 모드에서 커밋 메시지 입력

 

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

 

3. 아래 명령어로 커밋 로그 확인

git log

  • 모든 Commit 마다 고유의 문자열이 있음

 

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

reset vs revert

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

revert를 왜 써야할까?

  • reset은 이후 시점의 기록들을 지워버리기 때문에 revert를 사용하면 기록으로 남길 수 있다.
  • 뒤 내역들은 그대로 유지하되 앞에서 실행했던 내용만 취소할 수 있다.
  • 공유 공간에 올라간 내역을 reset 해버리면 다른 사람들의 코드와 심각한 충돌을 일으킨다.

reset

Add team Cheetas로 돌아가려고 한다. 리셋을 할 때 돌아가는 시점, 즉 커밋 해시가 필요하다. git log로 확인하자.

 

아래 명령어로 리셋한다.

git reset --hard e4f9e515b02d96465dc96b8f095683c748ef24c2

Add team Cheetas로 돌아왔다.

 

💡 참고사항

뒤에 커밋 해시가 없으면 아직 커밋되지 않은 것들을 다 지우고 가장 최근 커밋을 가리킨다.

git reset --hard

revert

Add George to Tigers를 취소하려고 한다. revert는 취소할 시점의 커밋 해시가 필요하다.

 

git log로 커밋 해시를 찾고 아래의 명령어를 입력하면

git revert 77847be447349e51363ab01f9334246f52700455

Add George to Tigers가 revert 된다.

 

충돌 해결

이번에는 Replace Lions with Leopards를 취소함으로써 leopards 파일을 삭제하려고 한다. 하지만 그 이후에 나오는 커밋에서 leopards 파일을 업데이트하고 있기 때문에 충돌이 발생한다.

이럴 경우에는 아래의 명령어로 충돌이 발생하는 파일의 내역을 삭제하고 

git rm leopards.yaml

git revert --continue 명령어로 다시 revert를 시작한다.

git revert --continue

성공적으로 revert를 완료했다.

reset을 사용해서 revert 전으로 되돌리기

revert 한 커밋을 다시 revert 할 수도 있겠지만 깔끔하게 reset으로 되돌리자.

git reset --hard d4aa23e1552de308dc10c603f29e10a42d62a1

커밋하지 않고 revert

revert할 때 바로 커밋하지 않고 원하는 다른 작업을 추가한 다음 함께 커밋할 때 사용된다.

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

 

 

참조

https://www.inflearn.com/course/%EC%A0%9C%EB%8C%80%EB%A1%9C-%ED%8C%8C%EB%8A%94-%EA%B9%83/dashboard