본 게시글은 모두의 git,github(저자 : 강민철)의 내용을 개인적으로 정리하는 글입니다.
버전 비교
직전 버전과 비교
아래의 그림과 같이 텍스트 파일에 변화가 일어났다고 하자
첫 번째 커밋을 클릭하면 초록색 +A가 뜨는데, 이는 A가 추가된 것을 뜻한다.
세 번째 커밋을 클릭하면 붉은색 -A가 뜨는데, 이는 A가 삭제된 것을 뜻한다.
버전별 비교
아래의 그림과 같이 텍스트 파일에 변화가 일어났다고 하자
두 번째 버전을 기준으로 생각했을 때 네 번째 버전은 아래처럼 A가 삭제되고, C가 추가됐다.
소스트리에서 두 번째 버전을 클릭하고 ctrl을 누른 상태에서 네 번째 버전을 클릭하면 변화된 내용을 확인할 수 있다.
비교할 파일을 선택하면 우측 하단에 두 번째 보전에 비해 네 번째 버전은 무엇이 달라졌는지가 나온다.
작업 되돌리기 - 변경사항 취소(폐기)
a.txt에 아무 내용도 없었는데, 어떠한 내용을 입력하고 저장하면 변경 내용이 생긴 것이다.
변경된 것을 취소(원래대로 되돌리기)하고 싶다면 폐기를 하면 된다.
폐기하고 싶은 파일을 선택 후
확인을 누르면 변경이 취소된다.
즉 변경하기 전으로 파일이 되돌아간다.
커밋 되돌리기
커밋을 되돌리는 방법에는 크게 아래와 같이 두 가지가 있다.
- revert
- reset
또한 reset에는 아래와 같이 세 가지로 분류된다.
- soft
- mixed
- hard
revert
revert는 버전을 되돌리되, 되돌아간 상태에 대한 새로운 버전(커밋)을 만드는 방식이다.
중요한 점은 기존의 버전은 삭제되지 않는다는 점이다.
아래와 같은 변화가 있다고 가정하자
다섯 번째 버전을 revert 하면 아래의 그림과 같이 네 번째 버전으로 되돌아간 새로운 여섯 번째 커밋이 만들어진다.
다섯 번째 버전은 그대로 유지된다.
소스트리로 revert 하기
reset
reset은 되돌아갈 버전의 시점으로 완전하게 되돌아가는 방식이다.
즉, 되돌아갈 버전 이후의 버전은 삭제되는 방식이다.
아래와 같은 변경이 일어났다고 가정하자.
여기서 두 번째 버전으로 reset 하면 아래와 같이 세 번째 버전은 삭제가 된다.
종류 | 내용 |
soft reset | 커밋만 되돌리기 |
mixed reset | 스테이지까지 되돌리기 |
hard reset | 작업 디렉터리까지 되돌리기 |
soft reset
작업 디렉터리 내 변경 사항과 스테이지에 추가된 변경 사항은 유지하되, 커밋했다는 사실만 되돌리는 reset을 soft reset이라고 한다.
mixed reset
스테이지와 커밋을 되돌리는 reset을 mixed reset이라고 한다.
hard reset
작업 디렉터리 내 변경 사항까지 통째로 되돌리는 reset을 hard reset이라고 한다.
소스트리로 reset 하기
작업 내용 임시 저장하기
깃은 스태시(stash)라는 임시 저장 기능을 지원한다.
작업을 하다 보면 작업 내용이 마음에 들지는 않지만 버리기는 아까울 때가 있다.
또는 갑자기 다른 더 중요한 일을 처리해야 할 때가 있다.
이런 상황에서는 지금까지의 변경 내역을 어딘가에 임시 저장하는 것이 좋다.
스태시를 하게 되면 작업 디렉터리에서 생성한 모든 변경 사항이 임시 저장되고, 작업 디렉터리는 변경 사항이 생기기 전의 깨끗한 상태로 돌아간다.
아래의 그림처럼 b.html을 삭제했다고 가정하자
여기서 스태시 하면 작업 디렉터리는 수정되기 전의 상태로 되돌아가고, 변경 내역은 임시 저장된다.
이제 다른 변경사항을 만들 수 있다.
또한 서로 다른 변경 사항 여러 개를 임시 저장할 수도 있다.
스태시로 임시 저장된 변경사항들을 다시 꺼내어 작업 디렉터리에 다시 적용할 수 있다.
아래의 그림처럼 이미 저장 항목 A를 꺼내면 아래와 같이 작업 디렉터리에 해당 변경 사항들이 다시 적용된다.
스태시를 사용할 수 있는 파일
스태시는 깃이 변경 사항을 추적하는(tracked) 파일에만 사용할 수 있다.
소스트리로 스태시 사용하기
지금까지의 작업 내용을 스태시 한다.
스태시 한 내용은 좌측에서 확인할 수 있다.
스태시한 내용을 불러오려면 아래와 같이 한다.
'Git & GitHub' 카테고리의 다른 글
[GitHub] 소스트리로 clone, push, fetch, pull, pull request 하기 (1) | 2023.12.28 |
---|---|
[Git] 소스트리(Sourcetree)로 브랜치(Branch) 다루기 (2) | 2023.12.27 |
[Git] 소스트리로 태그 만들기(+커밋 해시 개념) (1) | 2023.12.26 |
[Git] 소스트리(Sourcetree)로 커밋(commit)하기 (0) | 2023.12.25 |
[Git] 깃 초기 설정, 버전 관리 개념 (0) | 2023.12.25 |