favicon

Jayden { do: smite }

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가 어딘가 거부감이 들었는데, 찾아서 공부해보니 왜 사용하는지도 알 것 같고 어떤 상황에서 사용해야하는지도 알 것 같다. 작다고 생각하면 작을 수 있는 부분이지만, 궁금증이 생기면 반드시 찾아보고 이해하도록 하자.

참고

Copyright 2023. all rights reserved by Jayden