[TIL / Git] 커밋 되돌리기

Changyun Go·2021년 12월 1일
0
post-thumbnail

[TIL / Git] 커밋 되돌리기

reset 이용


  • 헤드 브랜치를 특정 시점으로 되돌리려면 해당 커밋을 우클릭 ⇒ 이 커밋까지 현재 브랜치를 초기화 ⇒ hard를 선택한다.
  • push해놓지 않았다면 이전 커밋은 사라진다.
  • 터미널에서 git reset --hard명령으로 사용할 수 있다.

강제 push

  • reset에 의해 작업 파일이 origin과 달라지면 push와 pull이 동시에 활성화된다. → push하면 에러가 발생하기 때문에 강제 push를 진행해야 한다.
  • 소스트리에서는 강제 push를 지원하지 않기 때문에 터미널에서 push --force명령으로 사용해야 한다.
  • origin과 병합을 시도해서 충돌을 먼저 일으키고 내 것을 선택해서 해결하면 정상적인 push가 가능하다.

장단점

장점

  • 쉽다.

단점

  • 커밋이 날아간다.
  • 강제 push가 필요하다.

브랜치 이용


  • 되돌릴 커밋에 브랜치룰 생성하여 작업한다.
  • 작업이 완료되면 반드시 master에 merge한다.

장단점

장점

  • 쉽다.
  • 커밋이 사라지지 않는다.

단점

  • 트리가 지저분해진다.

revert 이용


  • 되돌릴 커밋을 우클릭 ⇒ 커밋 되돌리기를 선택하면 대상 커밋의 내용을 되돌린 새로운 커밋이 생성된다.
  • 다시 복구하고 싶으면 체크아웃이나 리셋을 하면 된다.
  • 여러 커밋을 되돌리려면 최신부터 순서대로 revert를 반복 적용하면 된다.
    1. 예를 들어 순서대로 commit1, commit2, commit3가 있다.
    2. commit3를 revert한 이후에 commit 3와 revert "commit 3"는 없는 셈 치면 된다.
    3. 따라서 commit2를 똑같이 revert해주면 commit1으로 되돌아갈 수 있다.

장단점

장점

  • 커밋이 사라지지 않는다.
  • 가장 정석적인 방법이다.

단점

  • 충돌의 가능성이 높다.
  • 다소 어렵다.

P.S.

✍️ 지금의 나로서는 브랜치를 이용해 안전하게 작업하는 것이 가장 적절하겠다는 생각이 든다. 물론 협업을 하기 시작하면 트리의 가시성을 높이기 위한 고민이 필요할 것 같다🤓

Reference


0개의 댓글