수학과의 좌충우돌 프로그래밍

03.git 변경사항 확인 및 과거로 돌아가기 본문

git

03.git 변경사항 확인 및 과거로 돌아가기

ssung.k 2019. 2. 4. 19:28



안녕하세요 강민성입니다.


저번 시간에는 기초적이면서도 굉장히 중요한 내용들을 배웠습니다.


저장소를 만들고 add 하고 commit 하는 과정을 알아보았습니다.


이번 시간에는 commit 한 내용들을 확인하는 작업과 과거로 돌리는 작업을 해보도록 하겠습니다.




변경 사항 확인하기



저번 시간에도 git log 명령어는 배웠었습니다.


실습 진행을 위해 현재 4개의 commit을 해두었고 그 내용은 다음과 같습니다.

지금은 별 내용이 없으므로 commit 메세지로 어떤 기능이 하는지 분간이 안나가지만


commit 메세지는 메세지만 보더라도 어떤 작업을 한 것인지 구분을 해줘야 합니다.


하지만 여러 사람과 협업을 하고 코드의 내용이 많아지면 많아질수록


메세지만으로 구별하기 어려워집니다.


따라서 git 명령어로 수정사항을 확인 할 수 있습니다.


git log -p

그 결과 다음과 같은 화면을 볼 수 있습니다.

'test1 수정' 과 'test2 수정' 사이를 보면 - 기호와 + 기호로 어떻게 변경되었는지를 보여줍니다.


---/dev/null

+++b/test2.txt


기존에 없던 test2.txt 파일이 생성되었으며


+test2 in test2.txt


그 파일 안의 내용은 다음과 같이 추가되었다는 의미입니다.


파일의 내용을 지웠으면 + 대신 -로 제거 표시를 해줍니다.




이번에는 다시 log 를 확인해보도록 하겠습니다.


commit 옆에 영어 소문자와 숫자 조합이 보이실 겁니다.

이는 commit의 고유번호라고 생각하시면 됩니다.


저 번호를 통해서 git은 각각의 버젼들을 구분해줍니다.


지금은 버젼의 수가 별로 되지 않으므로 git log를 통해서 다 볼 수 있지만


버젼 수가 많아지게 되면 이것이 어려워 집니다.


git log {버젼의 고유번호}

다음과 같은 명령어로 고유번호에 해당되는 버젼의 이전 버젼들만 확인 할 수 있습니다.



다음으로는 좀 더 직접적인 비교를 해보도록 하겠습니다.


git diff

다음 명령어는 add 하기 전과 후의 코드를 비교해서 알려줍니다.


내가 바꾼 내용인데 굳이 비교할 필요가 있을까라고 생각하실 수도 있지만


이 역시 마찬가지로 코드가 길어지게 된다면,


한 번의 commit 마다 어떤 내용이 남기는지 확인할 필요가 있습니다.


따라서 commit 을 하기 전에 마지막으로 내가 어떤 걸 수정했는지 확인이 가능합니다.



다음으로는 두 버젼의 차이를 확인할 수 있는 명령어 입니다.


git diff {버젼의 고유번호}..{버젼의 고유번호}

마찬가지로 + 와 - 를 통해서 어느 부분이 추가되었고 삭제되었는지 확인이 가능합니다.



과거의 버전으로 돌아가기



이제 각 버전들을 확인하는 법을 알았으니


원하는 버전, 즉 과거로 돌아가는 법을 배워보도록 하겠습니다.


좀 더 정확히 말하자면 commit을 취소한다고 생각하면 되겠습니다.



크게 두 가지 방법이 있는데 resetrevert 입니다.


간단히 설명을 하면 reset 는 정말 과거로 돌아가는 것이고,


revert는 과거를 현재로 불러오는 작업입니다.


이렇게 말로 들으면 이해가 안될테니 실습을 통해 알아보겠습니다.


다시 log 를 확인해보면

다음과 같은 상황입니다.


이제 메세지가 2 인 commit을 한 직후로 돌아가보겠습니다.


git reset {버전의 고유번호} --hard

reset 명령어를 통해서 돌아갈 수 있고 이 때 뒤에 붙는 hard 에 대해서는


뒤에서 다시 설명을 해보도록 하겠습니다.

그 결과, log 역시도 2 이후의 버전들은 모두 사라졌습니다.


정말 과거의 상황으로 돌아온 것이죠.

물론 정말로 과거로 온 것은 아니기 때문에 없어진 버전들은 따로 보관을 하고 있습니다.


이를 복구하는 과정도 다음에 다시 알아보도록 하겠습니다.



다음으로는 revert에 대해서 알아봅시다.


revert는 과거 버전에 대한 내용으로 새로운 버전을 만들게 됩니다.


git revert {버전의 고유번호}

새로운 버전을 만들기 때문에 아래와 같은 창이 뜹니다.


어디서 많이 보지 않았나요?


네 맞습니다. 바로 commit 메세지를 입력하는 화면입니다.


저는 Revert "2" 라는 메세지로 2의 내용을 다시 가져왔다는 걸 표시했습니다.

그 후 log를 확인해보면 정상적으로 commit이 된 걸 확인할 수 있습니다.


간단한 TIP



git 내부적으로 명령어들에 대한 설명을 제공해주고 있습니다.


설명 뿐 아니라 명령어에 대한 모든 걸 알려주고 있죠.


git {명령어} --help

다음 명령어로 원하는 명령어의 상세 내용을 볼 수 있습니다.


한 번 commit 에 대해서 살펴보겠습니다.

위에서 부터 명령어 대한 설명, 여러 옵션들, 자세한 설명, 옵션들의 대한 설명으로 이루어져 있습니다.


자세한 설명은 봐도 이해하기 어렵기 때문에 넘기고


옵션들은 유용하게 사용이 가능합니다.


첫 번째 option -a 를 보도록 하겠습니다.


commit -a

-a 를 붙음으로서 add 없이 commit을 진행 할 수 있습니다.


add와 commit 이 한 번에 이루어 지는 것이죠.


이를 저번 시간에 배웠던 -m과 같이 써준다면


아래와 같이 많은 과정을 생략하고 commit을 진행할 수 있습니다.

commit -a -m "commit 메세지" 는 줄여서 commit -am "commit 메세지" 로 사용이 가능합니다.


이 처럼 다양한 옵션이 있으니 필요할 때마다 찾아서 요긴하게 쓰시길 바랍니다.





마무리



아직 갈 길이 멀지만 지금까지 배운 내용으로도 혼자서 작업을 하는데는


큰 무리가 없다고 생각이 듭니다.


이 과정 자체가 굉장히 생소하고 낯선 작업이기 때문에


많은 숙달을 통해서 본인의 것으로 만들기 바랍니다 :)

Comments