2010-03-23 4 views
2

내역을 살펴보고 각 버전을 체크 아웃하고 정리 스크립트를 적용한 다음 제거 된 버전을 다른 저장소로 체크인 할 수있는 git 용 스크립트가 있습니까?모든 버전에 코드 클린업을 적용하여 코드를 적용하는 스크립트

내가 개발 한 코드가 있지만 코드 형식과 일관성이 없습니다. 예 : 탭 대 공간 등 새로운 표준과 일관되게 내 전체 역사를 다시 쓰고 싶습니다.

답변

5

git filter-branch 명령은 필요한 작업을 수행합니다. 예를 들어

:

# Make a backup! 
cp -r <repo> <repo>.backup 
cd <repo> 
# Replace tabs with two spaces in all .cpp and .h files in all branches. 
git filter-branch --tree-filter \ 
    "find \(-iname '*.cpp' -o -iname '*.h' \) \ 
    -exec sed -i -re 's/\t/ /g' {} \;" -- --all 
# Delete branch backups created by 'git filter-branch'. 
# From the end of `man git filter-branch`; more cleanup 
# suggestions there. 
git for-each-ref --format="%(refname)" refs/original/ | \ 
    xargs -n 1 git update-ref -d 
# You still have ../<repo>.backup, in case something went wrong. 

는하지만 조심해야 해 ...이 망할 놈의 저장소를 변환합니다. 누군가 복제본을 가지고 있다면 더 이상 새 저장소에 연결되지 않습니다. 부터 man git filter-branch :

경고! 다시 작성된 기록에는 의 모든 개체에 대해 서로 다른 개체 이름이 있으며 원래 분기와 수렴하지 않습니다. 은 다시 작성된 지점 을 원래 분기 맨 위에 쉽게 푸시하고 배포 할 수 없습니다. 전체적인 의미를 모르는 경우이 명령을 사용하지 마십시오. 간단한 단일 커밋으로 문제를 해결할 수 있다면 을 사용하는 것이 좋습니다. ( 출판 역사를 다시 작성에 대한 자세한 내용은 자식-REBASE (1)에서 "복구 상류 REBASE FROM"절을 참조하십시오.) I 때 개인의 repo에서 세 지점에서 약 15 커밋 픽스 위를 사용

+0

내가 시작한 파일이 탭으로 가득 차 있다는 것을 깨달았습니다. (필자는 모든 편집 작업에서 공백을 사용했습니다.) – ntc2

관련 문제