일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 알고리즘 문제
- form
- 파이썬
- 파이썬 알고리즘
- DRF
- react
- django widget
- Baekjoon
- web
- es6
- Algorithm
- 알고리즘
- javascript
- Git
- 알고리즘 풀이
- 백준
- MAC
- Django
- 알고리즘 연습
- django ORM
- HTML
- PYTHON
- django rest framework
- AWS
- c++
- java
- 장고
- js
- API
- CSS
- Today
- Total
수학과의 좌충우돌 프로그래밍
03.git 변경사항 확인 및 과거로 돌아가기 본문
안녕하세요 강민성입니다.
저번 시간에는 기초적이면서도 굉장히 중요한 내용들을 배웠습니다.
저장소를 만들고 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을 취소한다고 생각하면 되겠습니다.
크게 두 가지 방법이 있는데 reset 과 revert 입니다.
간단히 설명을 하면 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 메세지" 로 사용이 가능합니다.
이 처럼 다양한 옵션이 있으니 필요할 때마다 찾아서 요긴하게 쓰시길 바랍니다.
마무리
아직 갈 길이 멀지만 지금까지 배운 내용으로도 혼자서 작업을 하는데는
큰 무리가 없다고 생각이 듭니다.
이 과정 자체가 굉장히 생소하고 낯선 작업이기 때문에
많은 숙달을 통해서 본인의 것으로 만들기 바랍니다 :)
'git' 카테고리의 다른 글
05. git의 원리(2) commit, status의 원리 (0) | 2019.02.06 |
---|---|
04. git의 원리(1) gistory와 add의 원리 (0) | 2019.02.05 |
02. git 설치 및 버젼관리(저장소 만들기 add, commit) (6) | 2019.02.03 |
01. git 이란? (0) | 2019.02.02 |
[git]github 개인 페이지 만들기! (0) | 2019.02.01 |