본문 바로가기
Programming/Git

GIT[3] : Version

by 드가보자 2024. 2. 8.

 

git diff 명령어인데, 직전 commit과 현재 commit의 Diff를 보여주는 것이다. 

 

git diff [commit1 hash] [commit2 hash] 하면 commit 1 2 의 차이점을 보여준다. 

 

source Tree에서는 비교하고자 하는 커밋 하나를 누르고, Ctrl + 다른 커밋을 누르면 

두 커밋간의 차이를 볼 수 있습니다. 

First commit 클릭 후 Ctrl + Third commit 클릭

그러면 왼쪽 아래에 File들의 List가 나오고 클릭하면 Diff를 볼 수 있다. 

 

수정된 파일들은 [스테이지에 올라가지 않은 파일] 쪽에서 Trace 된다. 

내가 막 다 변경했는데, 원래대로 돌리고 싶다면 

[수정된 파일] => 우클릭 => 폐기  

이렇게 하면 수정된 내용들이 모두 날아가고, 이전 버전의 상태로 남게된다. 

Untracked file은 우 클릭후 => 제거 => 파일 삭제된다. 

 

삭제되었던 파일도 , 우 클릭후 => [돌아가는 것] => 삭제되었던 파일이 다시 생성된다. 

 

그리고 Commit을 찍어서 Repository에 version을 만들어 냈는데,

 

해당 commit을 돌이키는 방법은 revert와 reset 크게 2가지가 있다. 

 

1 => 2 => 3 => 4 => 5 이렇게 현재 Commit이 찍혀있는 상태이고, 

현재 5번 commit 상태에서, 4번으로 돌아가고 싶어서 Revert를 하면 

1 => 2 => 3 => 4 => 5 => 6 , 6번 Commit이 새로 만들어지게 되는데 여기서 6번이 4번과 완전히 동일하다.

 

만약에 1 => 2 => 3 => 4 => 5 상황에서 3번으로 Reset을 하게 되면 

3번 이후 Commit은 모두 삭제되고 1 => 2 => 3 이 되는 것이다. 

이게 Reset과 Revert의 차이점이다. 

 

1-a) => 1-b) => 1-c) => 2-a) => 2-b) => 2-c) => 3-a) => 3-b) => 3-c)

여기서 a)는 작업 변경사항 생성, b)는 Stage로 올리는 과정 , c)는 commit 찍는 과정이라고 하면 

 

3번에서 2번으로 Soft Reset 시에는,

1-a) => 1-b) => 1-c) => 2-a) => 2-b) => 2-c) => 3-a) => 3-b)

3번에 대한 작업 변경사항과 , Stage에 올라 가 있는 것은 유지가 되고 Commit만 딱 날아간다

 

Mixed Reset은 

1-a) => 1-b) => 1-c) => 2-a) => 2-b) => 2-c) => 3-a)

 

Stage에 올라간 것 또한 Reset 되고 작업 변경사항들은 유지가 되어 있다.

 

Hard Reset은 예상 되겠지만

 

1-a) => 1-b) => 1-c) => 2-a) => 2-b) => 2-c)

완전 2번째 commit을 찍는 순간으로 돌아가는 것이다. 

두 번째 커밋 클릭 후 , 이 커밋까지 현재 브랜치를 초기화 버튼을 누르고 

사용 중인 모드에서 Hard Reset, Mixed Reset, Soft Reset 선택할 수 있다 .

 

Stash 라는 것이 있는데, 

 

만약에 혼자 뚱땅뚱땅 작업하고 있었는데, 급하게 해야할 작업이 들어왔어

 

그러면 현재 변경사항들을 묶어서, Stash라는 것으로 저장해놀 수 있다. 

SourceTree 위에 스태시 라는 버튼이 있고, 눌러서 저장해두면

 

작업 변경사항들이 모두 스태시로 저장되고, 변경 사항들이 모두 사라지게 된다. 

그러고 급하게 해야할 작업을 처리하고, 나중에 시간이 날 떄 Stash를 불러오면 되는 것이다.

 

내가 알기론 Stash 잘 안쓰는 것으로 알고 있다 .ㅋㅋㅋㅋ

'Programming > Git' 카테고리의 다른 글

Git[2] : Git 시작  (1) 2024.02.08
Git[1] : Git이 무엇?  (2) 2024.02.08