Git rebase : 커밋을 하나로 뭉쳐서 Push하자!

eunji hwang·2020년 3월 17일
3

git&github

목록 보기
2/4
post-thumbnail

Git rebase

깃 리베이스는 커밋을 하나로 정리하여 서버 마스터로 푸시하기 위해 사용된다. 많은 인원이 한 프로젝트를 진행하다 보면 커밋,푸시 내역이 뒤엉켜 지저분한 모습이 되는데 rebase를 통하면 보기좋고 깨끗한 커밋내역을 확인 할 수 있게 된다.(쓸모없는 커밋메세지도 안써도 되고~)

작업순서

1. git status

  • 제일 먼저 status를 통해 상태 확인을 하고 최종 커밋을 하자(git add > git commit)
  • 먼저 git log 를 통해 작업중인 브랜치의 커밋 상태를 확인하자. 2개 이상의 커밋이 쌓였다면, rebase를 통해 정리를 한 뒤
    origin master(server master)로 푸시를 해준다.

2. master 브랜치 최신화

git checkout master 를 통해 나의 로컬 마스터브랜치로 이동
git pull origin master를 통해 서버 마스터브랜치를 받아 로컬 마스터브랜치를 최신화한다.
git checkout 브랜치명: 다시 작업중이던 브랜치로 이동

3. rebase

git rebase -i master 커밋을 수정하여 리베이스 진행하겠다.??????? 라고 명령어를 입력하고 나면 아래와 같이 터미널에 수정할수 있는 창이 열린다. 나는 여기서

pick 000000 해더 html/css완료
pick 000000 해더 클릭이밴트&드롭다운 온오프

// 이하 주석

중 pick을 스쿼시 해주기 위해 아래와 같이 pick을 s로 변경하여 첫 커밋 상태로 나머지를 squash하겠다고 지정하였고 한글로 적인 커밋 메세지 또한 1개 수정하여 작성하였다.

이후 에디터를 나오기 위해 esc > :wq 에디터 저장, 닫기!

conflict

리베이스 진행중 충분히 컴플릭트가 발생할수 있고, 커밋내역이 많을수록 컴플릭트가 많이, 반복적으로 같은 컴플릭트해결을 해야 하는 경우가 생기게 된다. 필연적! 컴플릭트 발생을 줄이고 효율적인 리베이스를 위해서는 2~4개의 커밋이 쌓였을때는 한번씩 리베이스를 진행하도록 하자.

conflict를 해결하고 나서는 주의 해야 할 것이 있다

  • 출돌 해결 후 변경 된 것을 반영하기 위해 git status를 확인
  • 변경 파일들을 git add 로 추가 해주고,
  • git commit -m '메세지' 를 통해 커밋 반영까지 진행
  • XXXX push 하지 않은 상태에서 rebase 마저 진행!

4. git rebase --continue

충돌이 났을 경우 리베이스작업을 하기전에 충돌을 해결하게 된다. 충돌을 모두 해결하고 나면 미처 끝내지 못한 rebase 작업을 이어서 해야 하는데, 이때 명령어는 git rebase --continue로 진행한다. 이후 진행은 3번 rebase의 설명을 따라 스쿼시(squash)작업을 한다.
Successfully rebased and updated refs/heads/.....
위 내용이 콘솔에 찍히면 완료

5. git push

리베이스를 실행, squash(커밋내역 압축) 명령까지 마친 상태에서 log를 확인해 보자. 여러게 쌓여있던 commit이 1개로 수정된 것을 볼수 있을 것이다. 모든 커밋이 정리 되었으니 서버로 나의 커밋을 보내자.
git push origin feature/브랜치명 로 현재 완료한 기능의 커밋을 보내고 PR를 작성하면 된다.

만약 작업중 위와 같이 rejected가 발생하면 --force or -f를 통해 force push 를 하게 된다.
위와 같은 상황은 이미 PR을 날린 상태일 때 발생한다고한다.. 사실 자세한 이유는 모른다. (아시면, 댓글감사합니다.) 1차 프로젝트 하면서 징하게 나왔던 화면인데 이런 이유였다!

6. force push

git push origin 브랜치명 --force 를 통해 강제로 푸시를 진행한다. 하지만 꼭! force 명령어를 붙일땐 정말 이것을 올려도 문제가 없는지에 대해 꼭꼮꼭 !! 열번 확인하고 푸시하자!!

profile
TIL 기록 블로그 :: 문제가 있는 글엔 댓글 부탁드려요!

0개의 댓글