[git/github] rebase, stash
rebase
프로젝트를 진행하면서 git을 사용하면 작업내용별 branch를 만들어서 작업 후 main에 병합을 시킨다. 이때 방법은 merge와 rebase가 있는데, merge의 경우 각각의 commit 기록이 모두 남게되지만 rebase를 하면 commit의 기록을 관리하여 1개만 남겨서 깔끔하게 관리할 수 있다.
rebase 해보기
git pull
local main을 최신상태로 업데이트
git checkout main
git pull origin main
rebase
내 작업 branch에서 rebase
git checkout feature/[작업 branch]
git rebase -i master
squash
터미널에서 commit된 기록을 모두 볼 수 있는데, 제일 상단의 commit만 pick으로 두고 나머지는 pick 대신 s로 바꿔준다.
conflict
여기서 conflict가 발생할 수 있는데, 이를 해결 후 다시 git add [conflict 해결 파일명]
후, git rebase --continue
를 하면 된다 (commit은 x).
혹시 잘못진행이 되고있다 판단된다면
git rebase --abort
로 빠져나오면 된다.
commit
그러면 commit 메세지를 수정하는 창이 다시 나오는데, 여기서 이전의 모든 커밋을 통합하는 커밋메세지로 수정이 가능하다.
이후 git log
를 통해 push될 commit 이 잘 정리되었는지 확인.
git push
git push -u origin feature/[작업 branch] -f
commit의 수정이 있었으므로 그냥 push를 하게되면 오류가 나타난다. 그래서 반드시 -f 로 force push가 필요.
stash
git add .
를 실행하고 commit을 할 때, 원하지 않는 파일 변화가 기록될 수 있다. 예를들면 현재 다른 파일을 수정중이였는데 commit 시에는 이 파일 수정은 포함시키고싶지 않은 경우.
이럴때 stash를 사용할 수 있는데, git stash
를 써서 변화가 있는 파일을 임시로 보관할 수 있고, 이 상태에서 rebase를 진행하면 원치 않는 파일의 tracking 은 commit에서 제외시킬 수 있다.
rebase가 모두 완료되었다면git stash apply
로 다시 파일을 '보관함'에서 빼올 수 있음.
stash된 파일은 git stash list
로 확인 가능.
Author And Source
이 문제에 관하여([git/github] rebase, stash), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yoon1ee/gitgithub-rebase-stash저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)