Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 배열
- 항해99
- 회고
- 코딩
- 프로그래머스
- 자바
- 면접(java
- HTML
- Java
- 코딩공부
- GIT
- 이진 탐색(binary search)
- 메서드
- wil
- 99클럽
- Til
- 개발자 취업
- ArrayList
- Grafana
- Spring
- CS
- 코딩문제
- Entity
- cs 공부)준비
- github
- aop
- 코딩테스트 준비
- 정렬 알고리즘(sort algorithm)
- css
- 자료구조
Archives
- Today
- Total
hayu's 개발 일지
[TIL]240427 git commit 되돌리기 본문
git commit 되돌리기
깃 로그를 확인한다.(인텔리제이에서는 로그를 볼수 있다.)
git log
git revert , git reset
- revert와 reset는 커밋을 되돌리기 위해 사용하는 명령어다.
- reset은 커밋 history 자체를 뒤로 돌리고, revert는 커밋 history는 그대로 유지한 상태로 로컬 파일만 이전 커밋 상태로 되돌린다.
git reset
# 커밋 history를 이전으로 되돌린다.
git revert
# 커밋 history를 유지한 체 로컬 파일만 이전 상태로 되돌린다.
reset
- 로컬에만 커밋이 머물러 있거나 원격 저장소에 push룰 했어도 나만 사용하는게 확실하다면 reset을 써도 상관 없다.
- 하지만 다른 사람들과 공유하고 있는 브랜치라면 서로의 커밋 history가 달라지기 때문에 서로를 위해서도 하지 않는 것이 좋다.
reset 옵션
-hard
- 되돌린 커밋 이후의 모든 커밋 history를 삭제한다.
git reset --hard HEAD^
# 바로 이전 커밋으로 되돌린다.
git reset --hard HEAD~3
# 3 커밋 전으로 되돌린다.
git reset --hard 커밋아이디
# 특정 커밋으로 되돌린다.
-soft
- 커밋 history는 삭제되지만 변경 사항은 stage에 올라간 상태로 남는다.(커밋은 안된상태)
git reset --soft HEAD^
# 바로 이전 커밋으로 되돌린다.
git reset --soft HEAD~3
# 3 커밋 전으로 되돌린다.
git reset --soft 커밋아이디
# 특정 커밋으로 되돌린다.
-mixed
- 커밋 history는 삭제 되지만 변경사항은 stage에 올라가지 않은 상태로 남는다. add랑 commit을 하기 전 상태이다.
git reset --mixed HEAD^
# 바로 이전 커밋으로 되돌린다.
git reset --mixed HEAD~3
# 3 커밋 전으로 되돌린다.
git reset --mixed 커밋아이디
# 특정 커밋으로 되돌린다.
# 되돌린 이후 정상적으로 작동하면 변경 사항을 삭제하면 되고,
# 모종의 이유로 다시 원복하고 싶으면 아래 코드로 다시 커밋하면 된다.
git add .
# 모든 변경 사항을 stage에 올린다.
git commit -m "커밋 제목"
# stage에 올린 변경 사항 커밋
git push
# 원격 저장소에 push
원격 저장소에 올라간 커밋을 reset하면
- 원격 저장소에 올라간 커밋을 되돌리면 원격 저장소와 로컬 저장소의 커밋 history가 다르기 때문에 push할 때 오류가 나낟. 이때는 -force 옵션을 줘서 강제로 원격 저장소의 커밋 history를 로컬 저장소의 커밋 history로 덮어 씌워야 한다.
- 다른 사람들과 공유하고 있는 원격 저장소라면 공유중인 다른 사람들에게도 오류가 발생하기 때문에 왠만하면 사용하지 않는 게 좋다.
- 부득이하게 사용한 경우라면 팀원들에게 상황을 공유하고 모두의 커밋 history를 강제로 맞추는 작업을 해야한다.
git push 원격저장소 커밋 --force
# 강제로 원격 저장소에 push 한다.
git push origin HEAD --force
# 강제로 마지막 커밋을 원격 저장소(origin)에 push 한다.
revert
- revert는 커밋을 삭제하는게 아니라 이전의 변경사항을 불러와서 새로운 커밋을 추가한다. reset이 과거로 가는거라면 revert는 과거를 불러오는 느낌이다.
- reset 처럼 history가 꼬일 일이 거의 없어서 안전하다.
- revert를 사용하게 되면 git log에 Revert "커밋메시지"가 추가된다.
git revert HEAD
# 바로 이전 커밋으로 되돌린다.
git revert 커밋아이디
# 특정 커밋아이디로 되돌린다.
git revert -m 1 HEAD
# 마지막 커밋이 merge라면, 마지막 커밋으로 되돌린다.
git revert --no-commit 커밋아이디
# 특정 커밋아이디를 stage에는 올라가지만 commit하지는 않은 상태로 되돌린다.
revert는 커밋 history가 삭제되지 않고 어떤 커밋이 revert 되었는지 기록이 남기 때문에 history 관리도 유용하다.
깃 롤백을 할 때는 revert가 좋다.
'기술 > git, github' 카테고리의 다른 글
[TIL]240514 GitHub 리드미(README) capsule-render & 블로그 링크 넣기 (0) | 2024.05.14 |
---|---|
[TIL]240506 GitHub 리드미(README) 배지 넣기 (0) | 2024.05.06 |
[TIL]240411 git stash 및 저장법 (0) | 2024.04.11 |
[TIL]240404 GitHub 로그인 오류 - (1) 토큰이 존재하지 않을 때 (1) | 2024.04.04 |
[TIL]240330 GitHub에 올리지 않을 파일 .gitignore (0) | 2024.03.30 |