공부/Git, GitHub

[모두의 깃&깃허브]3장. 버전 가지고 놀기

개발의 피 2024. 5. 30. 11:29
1. 버전 비교하기
2. 작업 되돌리기
3. 스태시로 작업 임시 저장하기 

1. 버전 비교하기

1) 직전 버전과 비교

2) 버전별 비교 

찾고자하는 커밋에서 찾고자 하는 파일, 우클릭 -> 선택한 버전 열기 

n 번째 버전 파일 선택 + ctrl + m 번째 버전 파일 클릭 : n 번째, m 번째 차이점 확인 가능 

-> 몰랐던 기능.. 오 

 

2. 작업 되돌리기 

+) 버전이 만들어지는 과정
1) 작업 디렉터리에서 변경 사항 생성
2) 스테이지로 올리기
3) 커밋 

1) 스테이지에 올라간 파일 되돌리기 : 스테이지에서 내리기 or - 클릭

2) 스테이지에 올라가지 않은 파일 되돌리기 :

변경된 파일 : 우클릭 후, 폐기 (discard) 

새로 생성된 파일 : 제거 

3) 커밋 되돌리기 : revert, reset 

1) revert(커밋 되돌리기) : 버전을 되돌리되, 되돌아간 상태에 대한 새로운 버전(커밋)을 만드는 방식

* 기존의 버전 삭제 x 

ex. 다섯 번째 비전을 네 번째로 되돌리고 싶음 : 네 번째로 되돌아간 새로운 여섯 번째 커밋이 만들어짐 

 

2) reset(이 커밋까지 현재 브런치를 초기화) : 되돌아갈 버전의 시점으로 완전하게 되돌아가는 방식 (= 되돌아갈 버전 이후의 버전 : 삭제) 

+) 버전이 만들어지는 과정
1) 작업 디렉터리에서 변경 사항 생성
2) 스테이지로 올리기
3) 커밋 

1 soft (reset) : 커밋했다는 사실만 되돌림 (작업 디렉터리 내 변경 사항, 스테이지에 추가된 변경 사항은 유지)

-> 스테이지에 올린 파일까지 유지 

2 mixed : 스테이지와 커밋을 되돌림 (작업 디렉터리 내 변경 사항은 유지) 

-> 변경 사항을 생성한 상황만 남음 

3 hard : 작업 디렉터리 내 변경 사항까지 통째로 되돌림 (작업 디렉터리 내 변경 사항까지 통째로 되돌림) 

soft reset 커밋만 되돌리기 모든 로컬 변경 사항을 유지
mixed reset 스테이지까지 되돌리기 작업 상태는 그대로 두지만 인덱스는 리셋
hard reset  작업 디렉터리까지 되돌리기 모든 작업 상태 내 변경 사항을 버림 

 

내가 커밋 되돌리기를 사용한 방식은... 

직전 커밋으로 되돌아갈 때 : revert (되돌렸다는 사실까지 커밋에 남기기 위해)

revert의 한계 : 한 번에 하나씩, 차례대로 되돌려야함 -> 여러 커밋 전의 버전으로 돌아가기 위해서는 reset 사용 + hard만 선택

soft, mixed는 쓸모가 없다고 생각해서 사용하지 않았는데, 해당 기능을 사용하면 좋은 상황에 대해 고민해보기 

 

3. 스태시로 작업 임시 저장

스태시(stash) : 임시 저장 기능 

사용하는 상황 : 작업 내역이 썩 마음에 들지 않지만 버리기는 아까울 때 or 갑자기 다른 더 중요한 일을 처리해야 할 때 

-> 지금까지의 변경 내역을 전부 지워버리는 것이 아니라, 임시 저장해두기

스태시 : 작업 디렉터리에서 생성한 모든 변경 사항이 임시 저장되고, 작업 디렉터리는 변경 사항이 생기기 전의 깨끗한 상태로 돌아감 

+ 스태시로 임시 저장된 변경 사항들 : 언제든 다시 꺼내어 작업 디렉터리에 다시 적용 가능 

* 주의 : 스태시를 사용할 수 있는 파일 : 깃이 변경 사항을 추적하는(tracked) 파일에만 사용 가능

즉, 스테이지에 이미 올라와 있거나 한 번이라도 커밋한 적이 있는 파일에만 사용 가능 (untracked 파일에는 사용 x) 

 

-> GitHub Desktop 버전에서는 stash가 한 번만 저장이 돼서, 주로 사용하지 않았는데 

소스트리에서는 스태시에 여러 개를 만들 수 있고, 메시지도 입력 가능하다.. 오..! 여러 변경 사항을 임시 저장 가능하다...? 전까지 임시저장도 커밋으로 남겼었는데, 앞으론 스태시를 더 애용할 것 같다 !