깃미남님과 함께하는 git

(탄핵 재표결 오늘)   🔥 제목 시위는 [말머리] 또는 임시게시판(불타는앙)을 이용바랍니다.
오후 4시 탄핵 표결 | 가입후 5일 눈팅기간 | 경어체 필수 | 욕설(초성) 금지

[초보질문] git pull --rebase 에 대해..

알림
|
X

페이지 정보

작성자 no_profile 부엽토 125.♡.135.235
작성일 2024.12.01 23:49
140 조회
0 추천
쓰기

본문

큰 팀에선 이런 문제가 없거나 덜했는데, 작은팀에서 일해보니 한가지 문제가 있더라구요


저희 팀장님께서는, 성격이 수더분하셔서 그런지, git 히스토리 관리를 빡세게 하진 않는 편이십니다

로컬에서 작업을 하면, 우선 먼저 자기 작업을 commit 하시고 나서,

뒤늦게 git pull을 하시면서, 그때 가져온 다른 팀원들의 변경 커밋들을 자기 로컬에 merge해버린 후에

push 하곤 하십니다 (git pull 기본 동작)

그러면 첫째, 불필요한 merge 커밋이 생깁니다. (rebase 했다면 생기지 않았을)

둘째, 다른 팀원들이 열심히 flat하게 관리해가며 쌓았던 한줄기짜리 예쁜 히스토리가,

마치 뒤늦게 작성되어 합류된 것처럼 히스토리에 "곁가지"로 남습니다


저는 이게 별로 맘에 안들고 불편해서,

(이전 회사의 팀장님은 플랫한 히스토리 정책을 팀원 전체에 권장하셨었고 저도 이에 공감했었습니다)

현 팀장님께 잘 얘기하고 제안하고싶은데,

그래도 상사니까 이런저런걸 강요하기도 힘들고 해서 (약간 상명하복 분위기입니다)

git pull 할때 git pull --rebase 로 해달라고 제안드리는 수준까지만 요청해볼까 생각중인데,

이런식으로 어떤 특정 옵션이 디폴트가 되게 할 수 있을까요? .gitconfig 같은걸 건드려서요.

그리고 현 팀장님은 커맨드라인에서 pull 하시는게 아니고 그냥 vs code UI상에서 pull 땡기시더군요..

이때도 적용되었으면 좋겠습니다.


더불어서, git pull --rebase를 git pull 대신 사용할 때, 문제될 부분들이 있을까요?

댓글 6

Realtime님의 댓글

작성자 Realtime (75.♡.158.112)
작성일 12.02 03:39
그러면 컨플릭트 때문에 귀찮은 면이 있어서, 저는 그냥 머지&스쿼시 하는게 편하더라구요. 남들 브랜치가 길어지던 말던 제 브랜치는 커밋 하나만.... 커밋 메세지는 티켓 이름 넣어주고....

깃미남님의 댓글

작성자 깃미남 (121.♡.50.12)
작성일 12.02 11:55
@부엽토
같은 브랜치에서 pull 했는데 머지커밋 생성되면서 커밋히스토리가 분기쳐지면 참 보기 그렇죠.
말씀해주신 애로사항이 100% 공감됩니다. 제안드린 내용을 팀장님이 잘 수용해주시면 좋겠습니다.
문의주신 내용 답변 드립니다.

1. git pull시 디폴트로 rebase사용하기
(아래 두 명령 중 하나를 실행하시면 됩니다. 명령에 따라 설정을 local에만 적용할지 global로 적용할지, 적용 범위가 다릅니다.)
(local: 현재 저장소만 설정, global: 사용자 계정에 적용 - 사용자의 다른 저장소에도 적용)
git config --local pull.rebase true
git config --global pull.rebase true

2. pull시 머지 대신 리베이스를 사용하면 문제될 수 있는 부분
@Realtime 님이 말씀해주신대로 pull 수행시 충돌이 발생한 경우 충돌해결이 머지를 사용하는 것 보다 복잡해서 어려움을 느끼실 수 있습니다. 사실 차이는 충돌 발생시 머지는 충돌 해결을 한번만 수행하면 되는 반면, 리베이스시 출돌이 발생했을때는 최악의 경우에는 pull로 가져오려는 커밋 개수 만큼 git rebase --continue를 해줘야할 수도 있습니다.

3. 리베이스 참조자료
리베이스 사용하면 왜 좋은지 설득하는데 도움이 될 수도 있을 것 같아 공유드립니다.

Realtime님의 댓글의 댓글

대댓글 작성자 Realtime (75.♡.158.112)
작성일 12.02 12:14
@깃미남님에게 답글 맞습니다.

제가 한 브랜치에서 커밋을 수십번 하는 버릇이 있다보니, 그냥 리베이스를 하면 continue를 수십번 해야하는 경우가 생기더라구요.

리베이스를 할 때 하더라도,
1. 내 브랜치를 (새로 만든) 다른 브랜치로 머지&스쿼시 하여, 하나의 커밋으로 만들어 버린 뒤에
2. 다른 분들의 브랜치를 리베이스하면, (이제 내 커밋은 딸랑 하나 뿐이니까) 컨플릭트를 한번만 고쳐주면 되니까... 아무래도 시간 절약이 되는 편입니다.

이런 꼼수를 싫어하는 분들도 있을 수도 있겠다는 생각이 들긴 합니다. 비판은 언제나 환영 입니다 ㅎㅎ

부엽토님의 댓글의 댓글

대댓글 작성자 no_profile 부엽토 (121.♡.51.67)
작성일 12.04 17:25
@깃미남님에게 답글 오우 상세한답변 감사드립니다 이제서야 확인했네요
무엇보다도 공감해주시니 심리적으로 많이 후련합니다 ㅋㅋ
커밋이 많이 쌓였을경우 최악의경우 충돌이 일일히 날수 있을거란 생각은 못해봤네요 리얼타임님이 지적해주신부분도 고려해서 제안드려봐야겠네요. 저도 히스토리 굳이 안 나눠도 될 변경이면 스쿼시로 뭉쳐서 올리기도 합니다.
깃미남님께서 알려주신자료랑 방법이랑 이따 퇴근시간에 종합해서 상소문 작성 함 해봐야겠네요. 후기 남기겠습니다 감사합니다 칼퇴기원합니다

깃미남님의 댓글의 댓글

대댓글 작성자 깃미남 (112.♡.110.133)
작성일 12.04 17:50
@부엽토님에게 답글 좋은 방향으로 결정되길 응원드립니다.

깃미남님의 댓글

작성자 깃미남 (121.♡.50.12)
작성일 12.02 11:58
영상 링크걸면 페이지에 임배딩이 돼 버리네요.
https://damoang.net/git/22
위 링크 영상에서 1:31 (1시간 31분 정도)를 보시면 리베이스에 대한 설명을 확인할 수 있습니다.
쓰기
홈으로 전체메뉴 마이메뉴 새글/새댓글
전체 검색