본문 바로가기

2022년_동국대학교/OSSP 팀플 일지

[OSSP] 깃 충돌_이전 버전으로 되돌리는 방법 (reset과 revert 차이)

728x90

일단 필요없는 파일들 정리해야겠다는 생각에 호다닥 정리에 정리를 하고 커밋했는데 충돌했다.

당황하지 말고..찬찬히...

이전꺼를 다시 되돌려서 풀을 받아야 하니까!!!

버전을 이전으로 되돌려보자..!!! 


이전 버전으로 되돌리는 방법

대표적인 방법은 reset를 이용하거나 revert를 이용하는 두 가지 방법이 있다고 한다.

1. reset

아직 원격 저장소에 push하기 전이라면 reset을 사용할 수 있다.

없애고 싶은 커밋이 있을 때, reset을 이용하면 해당 커밋을 흔적도 없이 지울 수 있다.

$ git reset --옵션 커밋해시

옵션으로는 hard, soft, mixed 등이 있다.

1) hard

돌아가려는 커밋 이후의 모든 내용을 지워 버린다.

staging area와 working directory 모두 돌아가려는 커밋과 동일해진다.

 

2) soft

돌아가려는 커밋으로 되돌아가고, HEAD가 돌아가려는 커밋을 새롭게 가리키게 된다.

staging area와 working directory는 아무런 변화도 없다.

 

3) mixed

돌아가려는 커밋으로 되돌아가고, HEAD가 돌아가려는 커밋을 새롭게 가리키게 된다.

staging area는 돌아가려는 커밋과 동일해지고, working directory는 아무 변화가 없다

 

2. revert

이미 원격 저장소에 push한 상태라면 reset은 사용할 수 없고 revert를 사용해야 한다.

(이것이 reset과 revert의 차이!!)

->나는 이미 push 하고 pull request할 때 충돌이 난거라서 revert 사용

1)git log로 해시주소를 파악

git log 찍고, 커밋이 다음의 commit1>2>3의 순서로 발생했다고 해보자.

오른쪽에 뜨는 것이 git hash이다.

commit3        54c6547
commit2        a516d21
commit1        4567289    // 되돌아가려는 커밋

2) git revert로 버전 되돌려주기

내가 돌아가려는 커밋이 commit1이면,

commit3를 먼저 revert하고 이후 commit2를 revert하는 방식으로 순차적으로 진행해야 한다.

아래와 같이 입력하면 된다.

$ git revert 54c6547
$ git revert a516d21

3) git commit 해주기


결론

넘모 당황해서 찾아보고 해결하느라 캡쳐할 여유가 전혀..없었..^_^...

 

바로 전에 내가 풀리퀘하고 머지를 해서

내 로컬 저장소도 한번 더 synk해주고 git pull origin main을 해줘야 한다는 생각을 미처 하지 못했다.(지금 생각하면 참 바보 같...)

앞으로는 풀리퀘하고 머지하면 반드시 synk 해주고 git pull origin main 해줘야지!!

 

왜 다들 버전관리시스템을 말하는지 알 거 같다. 요 녀석 때문에 협업의 과정이 복잡해지긴 했지만,, 그래도 버전을 돌리면,, 되잖느항?...