Git & GitHub (3)

김서현·2022년 7월 27일
0

프론트엔드 스터디

목록 보기
16/16

이 글은 inflearn의 'Git과 GitHub 시작하기'를 수강하고 적는 글입니다.


10. Revert를 사용해 커밋 되돌리기

revert

  • 커밋은 그대로 두면서 working directory의 내용만 되돌림.

revert 사용해 보기

  • 대상 커밋을 HEAD커밋의 자식으로 새로 생성한다.
  • SourceTree에서는 커밋 선택 -> 우클릿 -> 커밋 되돌리기
  • Revert한 커밋 복구 : 커밋 선택 -> 우클릭 -> 이 커밋까지 현재 브랜치를 초기화 -> Hard

주의사항

  • revert 대상 커밋은 사라지지 않는다.
  • revert 대상 커밋의 내용을 되돌린 새로운 커밋이 생겨난다.

장단점

  • 장점: 이전 커밋 기록이 다 남아 있다.
  • 단점: 충돌 날 가능성이 매우 높다. 다소 어렵다.

11. Revert로 여러 커밋 되돌리기

Revert로 여러 커밋을 되돌리려면 어떻게 하나요?
-> 최신부터 순서대로 revert를 반복 적용하면 됩니다!

터미널 사용하기

git revert HEAD HEAD~1

ESC + :wq

12. 브랜치와 스태시

브랜치 체크아웃시 주의사항
브랜치를 만들고 체크아웃을 하려면 현재 작업디렉토리가 깨끗해야 함

갑작스럽게 체크아웃이 필요하다면?

  • 작업 중인 내용의 임시 저장
  1. 브랜치1에서 일단 (임시) 커밋을 한다.
  2. 브랜치2로 체크아웃하고 볼 일을 본다.
  3. 다시 브랜치1로 되돌아 온다.
  4. 1의 작업을 이어서 마무리 짓는다.
  5. 커밋 덮어쓰기 (commit --ammend)를 한다.
  6. (옵션) 필요하다면 (push --force)를 한다.
  • Stash를 이용해서 같은 작업 하기
  1. Stash를 만든다.
  2. 이 때 새로운 파일이 있었다면 일단 인덱스에 추가한다.
  3. 체크아웃한다.
  4. 되돌아 온다.
  5. Stash를 Pop한다
  6. 보통 커밋을 새로 생성한다.

13. rebase로 병합하기

Rebase의 장단점

  • 장점 : 커밋 히스토리가 깔끔하게 정리된다.
  • 단점 : 잘못하면 위험하다. 이미 원격 저장소에 올라간 경우 + 협업을 하고 있는 경우 특히 위험하다.

14. 기타주의 사항

  • 주석을 남기지 말자
  • 좋은 커밋의 단위
  • 커밋 메시지를 잘 쓰자

15. 요약

git 기초 명령어 요약

  • clone : 원격 저장소 복사
  • add : 스테이지 영역에 작업 파일 추가
  • commit : 세이브, 스테이지 영역의 파일들을 가지고 커밋(=세이브)를 만들 수 있다.
  • push: 원격 저장소에 커밋을 업로드

파일의 내용 되돌리기

  • 특정 파일의 내용을 마지막 커밋으로 돌리고 싶다면 해당 파일 선택 후 코드 뭉치 버리기 선택

브랜치 변경하기

  • 브랜치란 : 기존 내용을 유지한 채 새로운 내용을 추가하고 싶을 때 사용한다.
  • 체크아웃 : 특정 브랜치(혹은 커밋)으로 돌아가고 싶을 때 사용.
  • 소스트리의 체크아웃: 브랜치 이름을 더블 클릭하는 것만으로 체크아웃 가능

병합하기1

  • 헤드 브랜치에 변경사항이 없고
  • 병합 대상 브랜치가 헤드로부터 시작된 경우
  • 아주 쉽게 병합 가능 = fast-forward

병합하기2

  • 헤드 브랜치에 추가적인 커밋이 생기는 경우
  • 진짜 병합이 필요해 진다.
  • 충돌이 안 나면 좋은데, 충돌이 나도 겁내지 말자.

충돌 해결하기

  • 제일 중요한 점 : 겁내지 말자
  • 같은 파일을 병합 대상 두 커밋에서 동시 수정했을 경우 충돌이 날 확률이 높다
  • 에디터 사용, 혹은 SourceTree를 사용해서 충돌 해결 가능

커밋 되돌리기

reset 사용하기

  • 장점: 쉽다
  • 단점1 : 커밋이 날아간다
  • 단점2 : 강제 푸시가 필요하다

branch 만들어서 되돌리기

  • reset과는 달리 내용이 사라지지 않는다.
  • 장점 : 쉽다
  • 단점 : 트리가 지저분해진다

revert

  • 커밋이 없어지지 않는다.
  • 장점 : 가장 정석적
  • 단점 : 충돌이 날 수 있다.
  • 주의사항 : 현재 선택한 커밋의 내용을 되돌린다.

revert2

  • revert로 여러 커밋을 되돌리려면 최신부터 순서대로 revert 하자
  • 그렇게 하면 충돌을 막을 수 있다.

커밋 덮어쓰기

  • 필요하다면 이전 커밋 덮어쓰기도 가능
  • commit --amend
  • 이미 push를 한 경우 push --force가 필요함

stash

  • 다른 브랜치로 체크아웃 하기 전에 현재 작업내용을 저장하는 임시 저장소
  • 유용하니 잘 사용하자.

기타 주의 사항

  • 코드를 남기려고 주석을 달지 말자.
  • 커밋 메시지를 잘 쓰자
  • 한가지 구현이 완료될 때마다 커밋을 하자.

rebase

  • merge처럼 두 브랜치를 합칠 때 사용한다.
  • 현재 브랜치가 대상 브랜치 위로 올라간다.
  • 위험하니 조심스레 사용하자.

16. revert로 한 커밋 되돌리기

  1. 선택한 커밋 하나의 변경사항을 되돌림
  2. 새로운 커밋 생성
    cherry-pick 과 비슷하면서도 반대로 동작한다.

0개의 댓글