git rebase ( 스쿼시 )

BackEnd_Ash.log·2020년 3월 10일
0

ash_git

목록 보기
1/10
post-thumbnail

2021 08.29 git rebase 충돌나지않을때 update
2021 08.29 git rebase 중지하기

📌 브런치 병합

1. merge 
2. rebase

두가지 방법이 있다.


위와 같은 사진은 merge 하는 방법이다 .

만약 여러사람이 협업을 하고있다는 가정하에 , commit 이란 부분이 사이사이에 들어가기 때문에 조금 더러워진다.

위와 같은 사진은 rebase 부분이다 .
rebase 를 하게되면 기존에 내가 commit 한것을 병합을 해서 ,
새로 commit 으로 바꿔주게 된다 .

✅ rebase 충돌 안날때

master

한 branch 에 commit 을 3번했다는 가정하에 ,
git checkout master 로 가서
git rebase -i master feature/jakdu 를 입력한다.


위와 같은 화면이 나오게 된다 .

이렇게 텍스트 편집기로 들어오게 되고 ,
그리고 나서 2 번째 3 번째 picks 로 바꿔주면 된다 .
만약 여기서 충돌이 나지 않는다면 , push origin 을 하면 된다 .

master 로 가지않고 지금 branch 에서 하는 방법도 있다.

기존 branch

git rebase -i @~[커밋한 횟수]
예를들어서 ) 커밋을 3번했다고하면

feature/user > git rebase -i @~3

이런식으로 해주면 된다.

그리고 나머지는 같다. 제일 위에있는것은 pick 그대로 두고 나머지 밑에는 s 로 바꿔주면 된다.

그러면 아까와 같이 commit 메세지들이 보이게된다.

# This is a combination of 3 commits. //이 위치에서 dd를 눌러 줄을 삭제한다.
# The first commit's message is: //이 위치에서 dd를 눌러 줄을 삭제한다.
Task 1/3 // 이 위치에서 dd를 눌러 줄을 삭제한다.

# This is the 2nd commit message: //이 위치에서 dd를 눌러 줄을 삭제한다.

wip //이 위치에서 dd를 눌러 줄을 삭제한다.

# This is the 3rd commit message: //이 위치에서 dd를 눌러 줄을 삭제한다.

git rebase test commit three // 나는 이 commit만 남기고 싶으므로 이건 냅둔다.

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# rebase in progress;

이런식으로 보이게 되는데 , commit 메세지를 하나만 남겨야하니 , 나머지 commit 메세지는 삭제를 해주고 commit 메세지를 하나만 작성하도록 한다.

git rebase test commit three

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# rebase in progress;

그러면 총 이렇게 남을것이고 , git push origin feature/userpush 를 해주면 된다.

✅ rebase 충돌날경우

git checkout feature/hi 로 branch 를 바꾸고 나서 ,
git rebase -i master 를 입력해서 , 2번째와 3 번째는 S 로바꾸고 나서 wq 해서 나간다.
만약에 branch 를 master 로 바꾸게 된다면
(git rebase -i master feature/hi 를 입력해줘야한다.)

충돌이 나게 되면 , git rebase --continue 를 해준다.
그리고 vi README.md 로 다시 들어가서 ,
git add . 또는 git READEME.md 를 했는데 다시 에러가 발생한다면 ,
git rebase --continue 를 다시 해준다.

정상적으로 되지않을때는 뒤에 --force 를 붙여줘야한다.
ex )

git push origin feature/hi --force

git rebase --continue 가 해결이 끝나면 git push 를 해주면 된다.

✅ rebase 중지하기

git rebase --abort

참고자료 :

https://velog.io/@godori/Git-Rebase

profile
꾸준함이란 ... ?

0개의 댓글