협업을 다시 진행하면서 팀 컨벤션을 일치시키려고 노력한다.
자유 분방하게 작성하여 여러명이 작성한 것이 티나는(?) 과거의 버릇을 고치고 후에 봐도 무슨 코드를 작성했는지 알 수 있도록 틀을 정하고 있었다.

하지만 Git 브랜치 규칙에서 해당 규칙을 추가하니 본래 뜨던 merge가 아닌 Squash and Merge 라는 옵션이 뜨게 되었고 해당 Merge들의 차이점을 알아보고 작성해보려고 한다.
기본 전제
Master 에는 a-> b-> c 가있고
새로운 my-part 에는 d-> e-> f가있다.
기본 merge
$ git checkout master
$ git merge my-part

해당처럼 master branch 에 작성했던 커밋 d-> e-> f가 차례로 추가 되었다.
그리고 merge 메세지 역시 뜬다.
결론 (master)
a->b->c->d->e->f->merge message
feature 브랜치의 커밋내역을 합쳐서 깔끔하게 만들기 위해 사용
$ git checkout master
$ git merge --squash my-part
$ git commit -m "DEF"

결론(master)
a->b->c->"DEF" 라고 적혀진 3개가 합쳐진 1개의 커밋
Merge 방식과 비슷하지만 합쳐지지 않고 각각 master에 추가된다.
(하나하나가 개별적으로 가서 순서대로 합쳐지는 형식)
$ git checkout my-part
$ git rebase master
$ git checkout master
$ git merge my-branch
Merge와 다르게 통합이 안되기 때문에 Merge 메세지는 볼 수 없다.
결론(master)
a->b->c->d->e->f
꼭 한가지 방법만을 전체적으로 사용할 필요는 없습니다.
Git flow

Squash and MergeRebase and Merge Merge or Squash and Merge Merge라는 방법은 같지만 누군가에게 보여주거나 이후에 변경점을 찾을 때 깔끔하게 보이는 방법은 다른 것같다.
하지만 무조건적인 깔끔함보다는 해당 merge 의 차이점을 알고 필요한 변경점을 유지하면서 깔끔하게 유지하는 것이 좋을 듯하다.
현재 토이프로젝트는 develop 와 main으로 이루어져있으니 오늘 배운 것을 참고하여 Squash and Merge 와 Rebase and Merge 를 활용해야겠다.
https://meetup.nhncloud.com/posts/122
https://im-developer.tistory.com/182
https://blog.jetbrains.com/space/2023/04/18/space-git-flow/
잘 읽었습니다. 좋은 정보 감사드립니다.