git rebase

st2702·2020년 8월 8일
0

Git & Github

목록 보기
4/4
post-thumbnail

git 에서 한 브랜치에서 다른 브랜치로 합치는 방법론 2가지가 있다 .
1. merge
2. rebase

👏 백업부터 해라!!!

먼저 git으로 파일을 날려 본적이 많기에 '백업'먼저 하자.

작업폴더를 그대로 복사 붙여넣기 해도 되지만 터미널을 이용해 백업폴더를 만들어보자.

작업폴더 '이전폴더'로 가서 아래와 같이 입력해준다.

cp -rpv 작업폴더명 백업폴더명
ex) cp -rpv 1st-project 1st-project-backup

이런식으로 하면 터미널에서 고대로 복사를 하기 시작한다 . (주루루루루루룩 나온다면 제대로 복사하는게 맞다. )

⭐️ 항상 Local Strage (master) 최신화 유지!

일단 local의 master를 최신화 시켜주는게 최.우.선 이다.
githup에 master를 pull 해오자 (아래처럼)

git pull origin master 

다시 작업 branch로 이동 !

그럼 이제 rebase를 시작해보자

rebase 시작

작업폴더에 터미널을 띄우고 아래와 같이 작성하자.

  1. git add . (작업내용 추가)
  2. git commit (작업내용 커밋)
  3. git rebase -i master (작업내용 local master와 병합)

master merge와 별 다를게 없는데 ? 굳이 왜 하지??

rebase는 여태껏 commit 한 내용들을 깔끔하게'도' 정리할 수 있다.

지금까지 commit한 내용들이다 .
위에 'pick'이라고 적혀있는것만 보면 된다 . '#' 표시가 된건 주석이라 아무의미 없는것이니 넘어가자.

여기서 주의 깊게 봐야할것은 s (squash)다.

내용을 보자면 커밋을 사용하되 , 이전 커밋에 녹아들게 한다는 뜻인데
즉 , 최상단 커밋은 가만히 놔두고 2번째 부터 나머지 커밋들 앞에 pick > s 로 변경해준다

  • 작성을 하려면 i 를 누르면 하단부분에 --INSERT--라고 나오는데 터미널에서 작성이 가능하다.
  • 작성 후엔 esc 눌러서 :wq(저장 후 나가기) :q (나가기) 로 나가면 된다.

위 처럼 s (squash)로 변경후 :wq로 저장후 나가기 하면 다음과 같은 화면이 나온다.

자 여기서 '#'은 뭐다?

주석이다
😎 거슬리면 지워버리자

화면에 나온건 지금껏 커밋했던 내역들이다 .
전체 다 삭제 해주고 커밋내용을 새로 작성 해주자.

삭제는 어떻게 하냐구요??
지우고자 하는 란에 가셔서 DD 눌러주시면 한줄 삭제가 됩니다 !

여기서 다시 :wq 저장후 나가면

Successfully rebase가 됐다고 나옵니다.
그러면 rebase 성공 !!!

  • 만약 conflict가 나면 해결후 git add . >>> git rebase --continue 해주시면 됩니다.
  • 여기가 뭔지 , 내가 뭐하는지 모르겠다 싶으면 git rebase --abort 해주시면 됩니다. (rebase 전으로 되돌리기)

rebase에 성공을 하면 이제 마지막 push 가 남았습니다.

  • push에서 아무이상이 없다면 github에 Pull Request-> commit이 1개로 줄어있는걸 보실수 있습니다.!!

  • push에서 이상이 있다면

    git push origin 브랜치명 --force

이렇게 강제로 push해 주시면 됩니다.

접근방법이 다르다고 git에서 알려주는건데
본인이 rebase하면서 commit 등 수정사항등을 알기 때문에 push 하는것 입니다.

참조 : 위코드 git rebase 세션

profile
Never never never give up!

0개의 댓글