나는 우리가 병합 충돌을 방지하고보다 깨끗하고 깨끗한 공통 포맷터를 구현하기로 결정한 매우 큰 프로젝트에서 작업합니다 PRs를 볼 때 diffs (제발, 이것에 대한 의견 - 그것은이 시점에서 협상 불가능하다). 전체 코드 기반에서 포맷터를 실행하고 하나의 커밋/PR에서 모든 포맷팅을 방해하는 것이 정말 좋을 것 같습니다. 문제는 동시에 진행중인 여러 릴리스가 있다는 것입니다. 이런 식으로 뭔가 :Git의 대규모 변경을위한 전략 - 다운 스트림 브랜치와의 병합 충돌을 피하기 위해
___master_____________________ \ \__release_1_________________ \ \ \__release_2_______\________
참고이 매주 발생하고 수동으로 해결해야 병합 충돌을 자주 소스입니다 2. 해제 릴리스 1에서 병합. 모든 릴리스 1 분기를 형식화 한 다음 해당 변경 사항을 릴리스 2에 병합하려고하면 많은 수의 병합 충돌이있을 것으로 가정합니다. 이 문제를 해결하기 위해 우리가 생각한 전략은 다음과 같습니다.
- 모든 변경 사항을 Repo에서 고정합니다. 릴리스 1에서 릴리스 2로 병합하여 릴리스 2가 최신이고 릴리스 1이 현재 날짜로 변경됩니다.
- 릴리스 1에서 형식을 변경하십시오. 이렇게하면 repo에서 대부분의 행이 변경됩니다. 커밋 및 홍보 변경.
- 릴리스 1에서 릴리스 2로 병합이 변경됩니다. 충돌이있는 경우 릴리스 2 버전의 파일을 선택하십시오.
- 포맷되지 않은 상태로 유지되는 릴리스 2의 파일 (3 단계에서 병합 충돌이 발생한 파일 또는 새 파일 일 가능성이 있음)에 서식을 변경합니다. 커밋 및 홍보 변경.
질문은 -이 기능이 릴리스 1에서 릴리스 2 로의 주기적 병합으로 병합 충돌을 최소화 할 것입니까? 이로 인해 Git이 공통 조상 정보를 잃어 버리게되어 앞으로 더 많은 문제가 발생하게됩니까?
우리가 가지고있는 두 번째 옵션은 릴리스 1을 포기하고 릴리스 2의 모든 내용을 다시 포맷하는 것입니다. 그러나 릴리스 1에 대한 모든 변경 사항에 대해 병합 충돌이 발생할 것으로 예상되어 앞으로 릴리스 2로 병합됩니다.