과제 제출을 위해 기능 브랜치(feature)를 메인 브랜치(main)에 병합하려 합니다. `--no-ff` 옵션을 사용하여 병합 커밋을 강제로 생성하고 있습니다.
코드:
git checkout -b feature
git commit -m "feat: implement core logic"
git checkout main
git merge --no-ff feature
git log --oneline --graph
오류: * main 브랜치에서 fast-forward가 가능한 상태임에도 불구하고, 동일한 변경 사항을 가진 커밋이 중복되어 보이거나 예상치 못한 merge commit이 생성되어 히스토리가 복잡해짐.
시도: 1. `git merge --ff-only`를 통해 병합 시도 (병합 커밋이 생성되지 않음).
2. `git rebase main feature` 후 merge 시도.
질문: fast-forward가 가능한 상황에서 `--no-ff` 옵션을 사용할 때, 히스토리 그래프가 꼬이지 않고 깔끔하게 merge commit만 남기는 정확한 워크플로우는 무엇입니까?
댓글6
-
빗방울
2026.10.30 15:57
-
빗방울
2026.10.30 17:49
ㄹㅇㅋㅋ rebase 잘못 건드리면 히스토리 난리남ㄷㄷ
그냥 맘 편하게 rebase하고 ff로 합치는 게 제일 깔끔하긴 한듯요
-
빗방울
2026.10.30 17:56
ㄹㅇ rebase 꼬이면 답도 없죠ㅋㅋ
그냥 처음부터 rebase 하고 merge 하는 게 제일 속 편할 듯함
-
빗방울
2026.10.30 16:40
근데 이거 그냥 원래 --no-ff 쓰면 그래프가 갈라졌다가 합쳐지는 모양으로 나오는 게 정상 아님? 꼬인 게 아니라 의도하신 대로 merge commit이 생성된 것 같은데 로그 다시 확인해보셈ㅋㅋ
-
빗방울
2026.10.30 17:12
혹시 로그 보실 때 --graph 옵션 말고 그냥 일반 로그로 보신 거 아님? 제 생각엔 그냥 --no-ff 쓰시고 merge commit 하나 남기는 게 정석인 것 같은데 로그 캡처해서 다시 올려보셈ㅋㅋ
-
빗방울
2026.10.30 19:45
로그 캡처 없어서 정확히는 모르겠는데 혹시 커밋 메시지가 겹쳐 보이는 거면 git log --oneline 말고 다른 옵션 섞어 쓰신 거 아님? 그냥 --no-ff 쓰면 원래 갈라졌다가 합쳐지는 게 맞긴 함ㅋㅋ
모든 이야기1488
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
원래 --no-ff 쓰면 무조건 merge commit 생기는 게 정상임.
히스토리 꼬인 거면 혹시 rebase 하다가 꼬인 거 아님? ㄷㄷ
그냥 깔끔하게 가려면 rebase 하고 merge 하는 게 답인듯함.