커밋에 두 일찍 커밋 가입 :는 어떻게이 같은 저장소에
B
및
B2
갈등을 가지고
merge commit
에 해결되었다
init---A---A2---...---[D---B---merge]---...---master
\ /
C---B2
.
이제 커밋에 A
및 A2
을 추가하고 싶습니다. A
. 그리고
git rebase -i <commit id of init>
하고
pick xxxxxxx A
squash xxxxxxx A2
...
에
pick xxxxxxx A
pick xxxxxxx A2
...
을 변경하려고했지만 B2를 적용 할 때 충돌 등장, 그리고 수동으로 그냥에서 한 일처럼 갈등을 처리해야 merge
.
실제로 전체 커밋 트리에서 대괄호보다 훨씬 많은 복잡한 구조가 있습니다. 따라서 모든 충돌을 수동으로 처리하는 것은 현실적이지 않습니다.
rebase
을 사용할 때 전체 커밋 트리가 한 줄로 병합되고 커밋을 적용하여 충돌을 자동으로 처리하지 않습니다. merge
.
그렇다면 커밋 A와 A2에만 참여할 수 있지만 여전히 A2 이후의 모든 커밋 구조가 그대로 유지되어 작업 후 저장소가 '동일하게 보이도록'할 수 있습니까?
추가 설명을 위해, 커밋 A
에는 테스트 파일에 몇 가지 중요한 정보가 추가되어 커밋 A2
에서 제거되었습니다. 이 정보를 영구적으로 삭제할 수 없으면이 프로젝트를 게시 할 수 없습니다. 이 상황에 대한 대체 솔루션이 있습니까?
[Git 저장소의 처음 두 커밋 결합?] (https://stackoverflow.com/questions/435646/combine-the-first-two-commits-of-a-git-repository) – yarwest
있음 짧아, 할 수 없어. 일단 커밋을 만졌을 때, 모든 아이들은 더 이상 동일하지 않게됩니다. 당신이 할 수있는 최선의 방법은 아이들의 변화를 다시 적용하여 똑같이 "외모를 갖춰"보는 것입니다. 이미 수백 개의 커밋과 브랜치를 가지고 있다면 원하는 리베이스 작업을 쉽게 수행 할 수있는 방법이 없습니다. 다시 말해서 저장소 복제본의 모든 복제본을 다시 가질 필요는 없습니다. 현실적이지 않습니다. –
문제는 첫 번째 커밋에 참여하는 것이 아니라 수백 개의 커밋을 처리하는 것입니다.이 커밋에는 이미 많은 병합과 커밋 트리가 있습니다. 그래서 어쩌면 @ 애드리안 Shum 맞아요, 나는 그것을 할 수 없어 내가 더 포기할 것입니다 – Dizzam