나는 두 개의 브랜치 인 A와 B에서 작업하고 있었다. master 브랜치에서 프로젝트 히스토리에서 공간을 차지하고있는 큰 바이너리 파일을 제거하기로 결정했다. 나는 그렇게 사용 않았다내역에서 파일을 제거한 후 Rebase 브랜치
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch "Filename"' \
--prune-empty --tag-name-filter cat -- --all
은 A 분기 (this site에서 참조).
그러나이 작업을 수행 한 후에 다시 작성한 B 지점에서 작업을 다시 시작했습니다. 이 커밋 다음 트리 A1 및 A2는 B1과 누락 된 바이너리 파일을 제외한 B2와 같은 커밋이다
+----+ +----+ +----+
| A1 |->| A2 |---------------->| A5 |
+----+ +----+ +----+
+----+ +----+ +----+ +----+ /
| B1 |->| B2 |->| B3 |->| B4 |--/
+----+ +----+ +----+ +----+
결과. 어떻게뿐만 아니라 B에서 이진 파일을 삭제하고 커밋 나무는 다음과 같이 만들 수 있습니다 :
+----+ +----+ +----+
| A1 |->| A2 |---------------->| A5 |
+----+ +----+ +----+
\ +----+ +----+ /
\->| B3 |->| B4 |--/
+----+ +----+