GIT 에서 Merge 전략을 어찌 쓰시나요?

Git을 기본적으로 Branch 전략을 쓰고 있습니다.
예를들어

image

이렇게 Master 와 Feature 두개로 했다고 했을떄

Test1 브랜치에서

image

Test1.,cs 를 추가하고 push 했습니다.

Test2 브랜치에서도
image

Test2.cs 를 추가하고 push 했습니다.


그리고 Master 에는 와서
feature/test1,feature/test2 병합했습니다.
image

프로젝트 Load 실패로
image

충돌이 났습니다.
각브랜치에서 추가한 파일을 git 이 잘구분을 못하는것 같습니다. 물론
이것 충돌을 해결하면 됩니다. 하지만 간단한 코드나 가능하지
다른 사람이 만든 소스를 구분하는것 쉽지 않습니다.


하지만
image
image
충돌이 꽤 심각합니다.

이렇게 각 브랜치 머지 전략이 꼬이는 경우가 많고 사실상 못쓸 지경인데
다른분들은 git 사용하실때 어떻게 쓰시나요?

저는 머지 전략을 쓰지않고 Master 브랜치에 수동으로 파일을 수정하고
수동으로 사용해야 한다는 결론이 나오는데 좋은 방법이 있을까요?

Merge 전략은 프로젝트가 세분화 되있고 단일프로젝트를 한사람이
개발할때만 가능한것 아닐까요?

1 Like

git 브랜치를 병합하면서 충돌 상황은 자주 발생할 수 있다고 보는게 맞고, 이걸 적절하게 병합해야 하는 일은 자주 접할 수 있다고 보셔야 할 것 같습니다.

말씀하신 "단일 프로젝트 1인 개발 체제"가 더 적합하지 않는가 하는 부분은 결국 이 병합 과정을 책임지고 승인하는 것이 한 사람이기 때문에 드시는 생각일 수 있습니다.

https://velog.io/@mendel/Git-브랜칭-전략이란

보통 git 브랜치를 관리하고 병합을 할 때는 git-flow 같은 브랜치 디자인 패턴을 사용합니다. 팀 단위로 git을 사용할 때는 이런 흐름을 따르게 되니 같이 검토해보시면 좋겠습니다.

2 Likes

그래도 cvs나 svn보다는 훨씬 나아졌죠

따로 코딩하고 병합하는 방식은 필연적으로 conflict 날 수밖에 없죠
그래서 개발자 간의 규칙이 정의돼야 충돌을 줄일 수 있는데 역시 개발은 혼자하는 게 상책.

2 Likes

Git Flow 전략으로 사용하고 있습니다.
Feature 들을 모아서 Release 할 때 Conflict가 없으면 오히려 더 불안해요.
Merge 는 전략을 떠나서 코드에 대한 이해가 높은 사람이 더 중요하다고 생각합니다.

csv, svn, 팀서버 보다는 Git이 훨씬 편해졌습니다~

역시나 혼자 개발해야 고민 꺼리가 줄어드나봐요…;;;;

merge 는 line by line 으로 판단하기 때문에
동일한 파일의 동일한 line 변경이 감지되면 무조건 충돌로 인지하게 됩니다.

여럿이서 한 파일에 작업을 진행하는 상황이라면 충돌은 필연적이라고 봐야 하겠죠.

그래서 먼저 push 한 사람이 승자… 쿨럭

1 Like

프로젝트 파일은 하나의 파일이기에 충돌이 나는 게 이해되지만, 이름이 다른 두 파일(Test1.cs, Test2.cs)의 충돌은 조금 이해가 안 가네요.

1 Like

그렇드라고요 저렇게 머지하고 타 브랜치에서 또 머지하면 더 꼬이드라고요
완전 헬 모드 더군요 파일단위는 꼬이지 않는데 csproj 는 git 라인 단위로 해서
꼬이는것 같습니다

더한것도 봤습니다.
하나의 깃에서 한명은 라이브러리만 작업하고 한명은 GUI작업을 하는데도 충돌 나더군요.

그런데 이게 툴따라 달라지는 부분도 있지 않나 싶은것이
톨토이즈깃 사용자는 충돌떴었고 소스트리는 충돌이 았떴었거든요.

1 Like

아래가 파일 단위로 꼬인 거 아닌가요?

Project를 따로 만들어서 참조하는건 어떤가요?