git subtree add(squash 없이)로 upstream infer 레포의 12,500개 커밋을 한 번에 가져왔고, 그 위에 1,500개의 자체 커밋이 쌓인 형태.git log / git blame / git rev-list 등의 속도와 .git 용량 개선..git/shallow vs .git-blame-ignore-revs.git-blame-ignore-revs |
.git/shallow |
|
|---|---|---|
| 영향 범위 | git blame만 |
거의 모든 git 연산 |
| 커밋 존재 여부 | 그대로 있음 | 경계 너머는 잘림 |
| 목적 | blame 노이즈 제거 | history truncate / 속도 |
| 위치 | repo 루트 (커밋됨) | .git/ 내부 (로컬만) |
| 공유 | 팀과 공유 | 로컬 전용 |
속도 목적이면 .git/shallow가 맞는 도구.
1fe16b560bb03dd610fe272e3e3515ad6c2498a7 가 git subtree add(no squash) 머지 커밋이라면, 두 개의 부모를 가짐:
자르고 싶은 건 부모2 쪽 체인뿐이므로, 부모2 SHA를 .git/shallow에 넣는다. 그러면 머지 커밋과 부모1 쪽은 그대로 살고 upstream만 잘림.
cp -r .git .git.backup
문제 생기면 rm -rf .git && mv .git.backup .git로 원복.
git rev-list --parents -n 1 1fe16b560bb03dd610fe272e3e3515ad6c2498a7
# 출력: <self> <parent1> <parent2>
각 부모 쪽 깊이 체크: