2단계를 풀어볼 차례이다!
1. HEAD
HEAD는 현재 체크아웃된 커밋을 가르킨다. → 현재 작업중인 커밋
목표를 보니 아마도 bugFix에 숨어있는 HEAD를 꺼내보라는 것 같다. 커밋에 직접 Checkout 해주면 되지 않을까?
결과는 성공이다!
하지만, HEAD를 꺼내기 위해 HEAD를 checkout 해보았지만 실행은 되지만 되지 않았고 c4라는 커밋에 직접 checkout 해주니 HEAD가 나타났다!
2. 상대 참조(^연산자)
Git은 커밋들을 해시로 구분하고 있고, 그곳으로 시간여행을 할 수 있다. 그리고, 그곳에 도달하여 작업을 진행할 수 있다.
커밋을 움직을때 한 칸은 ^, 여러 칸은 ~<num> 을 사용한다.
나는 바로 c3커밋을 checkout 해주면 되지 않을까 라는 생각을 하게 되었다.
결과는 성공이였다!
하지만 또 다른 방법이 있지 않을까 생각했다. ^를 사용하여 checkout 한다면 되지 않을까? 생각했다.
이번것도 정답으로 출력되었다!
3. 상대 참조( ~ 연산자)
위와 같이 다른 커밋으로 시간여행을 할 수 있는 상대참조이다. 하지만 한칸한칸씩 이동하기 귀찮기 때문에 한번에 움직일 수 있는 틸드(~) 연산자가 있다.
+ f(--force)옵션을 사용하여 브랜치를 특정 커밋에 강제적으로 재지정 할 수 있다.
main 브랜치를 강제로 c6으로 옮긴 후 HEAD는 직접 C1으로 checkout해준 후 강제로 HEAD의 1번째 위로 이동시켜주면 되지 않을까 생각했다.
결과는 성공이였다.
4. Git에서 작업 되돌리기
git에서 작업한 파일을 되돌려야 하는 경우들이 많은데, 그럴 경우를 대비해 사용한다.
(1) git reset
reset은 직접 과거의 커밋으로 돌아가는 것을 의미한다. 과거에서 커밋하지 않은 것 처럼 예전 커밋으로 이동한다.
(2) git revert
reset은 히스토리를 고쳐써서 다른 사람이 작업하는 브랜치에는 사용할 수 없지만, revert는 히스토리를 복사해 그대로 붙여 새로운 작업으로 활용할 수 있다. 특정 커밋의 내용으로 되돌리는 커밋을 하는 벙법이다.
local을 reset 하여 c1 커밋으로 이동하고, pushed는 c2 커밋을 revert 해주면 될 것 같다라는 생각을 했다.
결과는 성공이였다!
'Git' 카테고리의 다른 글
[Git]Git Interactive tutorial6 (0) | 2022.08.18 |
---|---|
[Git]Git Interactive tutorial5 (0) | 2022.08.17 |
[Git]Git Interactive tutorial4 (0) | 2022.08.16 |
[Git]Git Interactive tutorial3 (0) | 2022.08.12 |
[Git]Git Interactive tutorial (0) | 2022.08.10 |