Git, GitHub 입문7

JR_min·2022년 6월 20일
0

Git GitHub시작하기

목록 보기
7/7

갑작스러운 요구사항 변경. 옛날코드로 돌아가기 - reset

reset -> 옛날 commit으로 branch 되돌리기.
좋아요 버튼과 싫어요 버튼 기능을 만드는 중에 요구사항이 변경되었다. 싫어요 버튼은 빼고 좋아요 버튼까지만 만들어야 한다. 다행히 좋아요 버튼을 다 만들었고 commit까지 했다.


돌아갈 commit에서 오른쪽 버튼 클릭 -> master를 이 커밋으로 초기화 클릭

HARD 옵션으로 로컬 작업물을 지우고 master를 뒤 시점으로 되돌린다.

로컬에 있는 master는 제대로 reset이 되었지만 원격에 있는 master는 아직 적용이 안되었다.
push로 이력을 고쳐야 하는데 push를 누르면 이미 push 했던 이력을 고치는 push 이기 때문에 오류가 난다.
force push 강력 푸쉬가 필요하다.
force push -> 이미 원격 저장소에 적용한 commit들을 수정할 때 사용 (혼자 사용하는 branch 에서 사용)

MAC사용자는 소스트리 설정 -> 고급 -> 강제 푸시를 허용 체크 (소스트리 최신버전 한국어 설정시 오류있음 언어 영어로 바꾸고 설정 고급 강제푸시 허용 체크박스 체크 후 푸시 강제푸시 체크)

reset 옵션
HARD reset - 이후에 변경사항이 있어도 없어도 전부 날려버리고 옛날 버전으로 commit reset
MIXED reset - 버전을 reset 하긴 하지만 그 후에 변경사항들은 로컬에 저장만 해 줌 reset 해도 남기고 싶은 파일들은 stage 아래에 남겨 두겠다.

commit의 변경사항을 되돌리고 싶을 때 - revert

revert -> 방금 만든 commit을 revert하는 새로운 commit 생성
master에 잘못된 커밋을 올렸다. reset하고 force push하면 다른 사람들 히스토리에 영향을 준다. revert하는 커밋을 새로 만들자

reset -> 히스토리 완전 초기화
revert -> 히스토리 새로 쌓아가며 변경


master branch에 잘못된 commit을 했을 때 HARD reset 을 하고 force push를 하게 되면 master는 모든 사람이 보고있는 branch이기 때문에 다른 사람들이 수정 중이라면 conflict가 발생한다.
이력을 수정하기보다 새로운 이력을 만들면서 잘못된 commit을 날려버린다.

여러가지 commit에서 내가 원하는 commit 하나만 떼서 지금 branch에 붙이고 싶을 때 - cherry pick

  • 가장 최근 latest branch에 버그가 있다. 버그가 수정된 branch는 master branch다. 버그가 수정된 부분을 latest에 반영시키려면 merge해야 한다.
  • 하지만 master에 다른 수정사항이 너무 많아서 lastest랑 당장 merge가 불가능하다.
  • 당장 merge할 수 없는 이유는 latest branch는 무조건 release를 위한 branch이고 master branch는 완벽한 코드가 있는 branch이기 때문이다.
  • release된 latest branch에 버그수정 commit은 들어가야 한다.
  • 버그를 수정한 commit만 똑 떼서 lastest branch에 붙인다 -> cherry pick


지금 master branch에 필요한 commit은 버그 수정한 commit이다.

cherry pick 하고 싶은 master branch에 떼어 붙이고 싶은 commit에서 우클릭 후 cherry pick하기

0개의 댓글