2017-12-27 45 views

답변

2

귀하의 우선 순위에 따라 다릅니다.

파일이 이전에 변경된 적이 없기 때문에 처음에 추가 된 커밋은 변경 사항을 적용 할 새 분기를 만들 수있는 적절한 "공통 루트"여야합니다. 그것을 모든 지점에 병합하십시오. 이 접근법은 프로젝트의 실제 역사를 가장 잘 반영합니다.

물론 아래쪽은 많은 병합 작업입니다. 가지가 많으면 모든 병합을 적용하는 것이 지루할 수 있습니다 (변경하지 않은 파일을 수정한다는 생각으로 계산하면 자동화 할 수 있지만 충돌이 없어야합니다). 또한 이러한 병합은 각 지점의 기록에 추가됩니다. 제게 그것은 나쁜 것이 아닙니다. 다시 정확한 역사입니다. 그러나 어떤 사람들은 "복잡한"커밋 토폴로지를 싫어합니다. 그래서 그것은 당신이 고려하기로 마음 먹을만한 것입니다.

다른 옵션은 기록을 다시 쓰는 것입니다. 여기에는 몇 가지 단점이 있습니다. 모든 커밋 ID 값이 변경됩니다. 어떤 종류의 도구 나 문서에서 커밋 ID를 사용하면 문제가 될 수 있습니다. 그리고 repo의 클론을 가진 다른 사용자가있는 경우 본질적으로 대량의 "업스트림 리베이스"와 같은 조건을 복구해야합니다. 또한 다시 작성된 기록은 코드가 실제로 보였던 것을 반영하지 않습니다. 그러나 당신이 그런 것들에 관심이 없다면, 이것은하기가 더 쉽고 커밋 토폴로지를 변경하지 않아도됩니다.

그래서 가장 쉬운 방법은 filter-branch입니다.

git filter-branch tree-filter='cp /some/path/to/new/version worktree/path/to/old/version' -- --all 

당신은 아마 더 빠를 것 대신 tree-filterindex-filter을 사용하는 방법을 일할 수있는 -하지만 확실히 쉬운 일이 아니다.

3

파일을 변경하려면 새 분기를 만들어야합니다. 그런 다음 해당 분기를 다른 모든 분기로 병합 할 수 있습니다. 이렇게하면 새 분기의 모든 변경 사항을 병합 한 각 분기에 추가합니다.

+3

이 분기는 가장 오래된 공통 커밋부터 시작해야합니다. – Philippe

관련 문제