231211(월)
🌱 성장일지 8.0
책 행복한 이기주의자(웨인 다이어)
의 내용에 자극받아 시작하는 소박한 성장기록
- 살아있는 꽃과 죽은 꽃은 어떻게 구별하는가?
- 성장하고 있는 것이 살아 있는 것이다.
- 생명의 유일한 증거는 성장이다!
⚛ (8.0)<완전 개편> 그 날의 키워드 중심으로 간단하게 정리하되 매일 꾸준히 작성할 수 있는 공간을 만들어보자.
rebase
- 말 그대로 기존 브랜치의 base를 변경하는 것이다.
- 일반 merge가 merge에 대한 커밋을 남기는 반면, rebase는 커밋을 남기지 않고 브랜치를 1개로 합치는 느낌
push --force
- rebase를 하고 나서 브랜치를 push하려고 하면,
non-fast-forward
에러가 발생한다. - 이는 기존 브랜치와 현재 브랜치가 다른 커밋을 가리키고 있기 때문에 발생하는 에러이다.
- 그렇기 때문에
--force
옵션을 주어 강제로 push를 해야한다. - 단,
push --force
는 기존 브랜치를 덮어쓰기 때문에, 다른 사람이 해당 브랜치를 사용하고 있다면 문제가 발생할 수 있다.- 즉, 나 혼자 작업하는 기능 브랜치에서만 사용하자.(다른 사람과 함께 작업하는 브랜치에서는 절대 사용하지 말자.)
push --force
가 되게 위험해보이고 안좋아(?) 보이지만,--force
또한 엄연히 git의 기능이다. 그렇기 때문에--force
를 사용하는 것이 나쁘다고 말할 수는 없다. 다만,--force
를 사용할 때는 주의해야한다는 것을 알아두자.
push --force-with-lease
push --force
는 위험하다고 했다. 그렇다면 어떻게 해야할까?push --force-with-lease
를 사용하면 된다.push --force-with-lease
는 기존 브랜치와 현재 브랜치가 다른 커밋을 가리키고 있을 때, 에러를 발생시키는 것이다.- 즉, 다른 사람이 해당 브랜치를 사용하고 있을 때, 에러를 발생시키는 것이다.
- 본인이 사용하는 기능 단위 브랜치가 혹여나 다른 사람이 사용하고 있을까봐 걱정된다면,
push --force-with-lease
를 사용하자.
📝 회고
회사에서 rebase를 통해 브랜치를 관리한다. 보통 혼자 프로젝트를 할 때는 비교적 안전하고 이해하기 쉬운 merge를 사용했기에, 다소 낯설었다. 그리고 브랜치를 하나로 예쁘게 해주는 것말고는 큰 장점이 있나 싶기도 했고..! 그리고 또 rebase 후에 자연스럽게 할 수 밖에 없는 push --force
가 어딘가 거부감이 들었는데, 찾아서 공부해보니 왜 사용하는지도 알 것 같고 어떤 상황에서 사용해야하는지도 알 것 같다. 작다고 생각하면 작을 수 있는 부분이지만, 궁금증이 생기면 반드시 찾아보고 이해하도록 하자.