일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프리워커스
- comprehension
- 오블완
- 싸피
- SSAFY
- TIL #todayilearn #math #javascript #js #자바스크립트 #절댓값 #최댓값 #랜덤 #random #floor
- LIST
- django
- 파라미터
- loaddata
- wecode
- CSS
- dumpdata
- Python
- CSS #HTML #코드
- VSCode
- phython
- 파이썬
- 위코드
- 코딩
- 프로그래밍폰트
- html #css #코딩 #입문 #코딩시작하기 #코딩입문 #파이썬 #자바스크립트 #비전공자 #비전공 #코딩학원
- HTML
- dangerouslySetInnerHTML
- 티스토리챌린지
- Web
- Coding
- listdir
- vscode설치
- 역사
- Today
- Total
당신의 친절한 이웃, 코딩맨
#26 Git - Reset, Revert 본문
깃...... 하다 보면 코딩만큼 까다로운 버전 관리 컨트롤.. 뭔가 하다가 잘 안되면 컴퓨터도 재부팅을 하고, 브라우저가 먹통이면 껐다 켜듯이 버
전 관리를 하다가 마음처럼 잘 안되면 어쩌면,, 몇 개의 커밋을 날리더라도 문제가 나기 전으로 돌아가는 게 좋을 때도 있다.
1. Reset
Reset은 시계를 다시 맞추는 것이다. 돌아가려는 커밋으로 리파지토리는 재설정되고, 해당 이후의 커밋은 사라지게 된다.
$ git reset <옵션> <돌아가고싶은 커밋>
1 - 1. hard
돌아가려는 이력 이후의 모든 내용을 지워 버린다. 이렇게 하면 돌아가려는 커밋 이후에 커밋들은 사라진다. 물론 그 시점 전의 커밋들은 그대로 있다
$ git reset --hard a3bbb3c
<돌아가고 싶은 커밋>에는 커밋 번호 (예로 $ git gloga)로 찾은 커밋 번호 (a 3 bbb3 c)들이다.
1 - 2. soft
돌아가려 했던 이력으로 되돌아 갔지만, 이후의 내용이 지워지지 않고, 해당 내용의 인덱스도 그대로 있다. 바로 다시 커밋할 수 있는 상태로 남아 있는 것이다.
$ git reset --sorf a2bbb3c
1 - 3. mixed (옵션을 따로 적지 않으면 mixed로 동작한다)
이후에 변경된 내용에 대해서는 남아 있지만, 인덱스는 초기화된다. 커밋을 하려면 다시 변경된 내용은 추가해야 하는 상태이다.
예로, 영화를 보기 전으로 기억도 되돌려졌고, 표와 팝콘 그리고 사이다는 사야겠다는 마음이 남아 있는 셈
$ git reset --mixed a2bbb3c
현재부터 몇 개의 커밋을 되돌릴 수도 있다.
$ git reset HEAD~6
이러면 현재부터 6개 이전의 커밋으로 되돌릴 수도 있다.
2. Revert
Revert는 이력은 그대로 있고, 커밋만 되돌리는 것이다.
어떤 영화에 스포일러를 당했다고 가정하면, 스포일러 당한 것에 대한 기억은 하고 있지만, 그 내용은 기억 못 하는 것 같은 느낌이다.
$ git revert <되돌릴 커밋>
3. 언제 reset과 revert를 사용해야 하나?
단순하게 생각하면 reset을 하는 것이 revert를 하는 것보다 이력을 (커밋들의 이력) 단순하게 만들어주고, 딱 그 시점으로 돌아가게 해 주기 때문에 revert보다 reset이 나아 보인다. 하지만 이력 중간에 로그를 출력하도록 한 커밋이 있고, 그 커밋만을 취소하려고 한다면 reset을 사용하여 이후의 이력을 모두 제거하는 것은 이후 이력을 모두 날려버리는 결과를 낳을 것이다. 이럴 때에는 revert를 사용하는 게 더 좋아 보이기도 한다.
'이미 원격 레파지토리에 push를 한 상태라면 reset을 사용하면 그 이전으로 되돌리기 전까지는 push 할 수 없게 된다. (push --force)가 있긴 하지만.. 그래서 이미 push 한 코드라면 미련을 버리고 revert를 사용해야 한다..'
'Today I Learn (TIL)' 카테고리의 다른 글
#28 Python - Django의 전체적인 플로우 (0) | 2020.07.26 |
---|---|
#27 Python - Json으로 된 파일에 접근해서 값 가져오기 (0) | 2020.07.24 |
#25 Python - beautifulSoup으로 코스피 정보를 불러오는 웹 크롤링 (0) | 2020.07.17 |
#24 Python 사무 자동화 기본편 - 파일 이름 바꾸기 (0) | 2020.07.16 |
#23 DataBase 의 기초 (0) | 2020.07.12 |