2012-08-10 7 views
0

커밋 메시지를 모두 변경하여 다른 언어로 바꾸고 싶습니다.

git-filter-branch --msg-filter를 사용하여이 작업을 수행 할 수 있음을 알고 있지만 메시지를 어떤 패턴으로 바꾸려하지 않고 내 편집기에서 각 커밋 메시지를 열고 싶습니다. 그것을 저장하고, 내가 git-rebase --interactive에서 reword를 사용할 때처럼.

+0

왜 rebase를 사용하지 않습니까? – kan

+0

Rebase는 병합 커밋을 보존하지 않습니다. 아래 willoller 내 대답을 참조하십시오. – danillonunes

답변

2
git filter-branch --msg-filter 'cat > ~/msg && 
    vim >&2 <&1 ~/msg && 
    cat ~/msg' HEAD^^^^..HEAD 

이렇게하면 vim을 사용하여 최근 4 회의 커밋 메시지를 편집 할 수 있습니다. 두 번째 백업을 덮어 쓰는 경우 -f을 추가하십시오.

+0

감사합니다. :) – danillonunes

0

분기를 리베이스하면 임의의/모든 커밋 메시지를 편집 할 수 있습니다.

Git의 까다로운 점은 커밋 메시지를 커밋의 일부로 사용하기 때문에 분기가 분기됩니다.

그냥 (지사에) 수행

git rebase -i master 

또는 당신이 에디터되게됩니다 때 저지른 병합 (감사 danillonunes 아담 D.)

git rebase -i master --preserve-merges 

을 유지하려는 경우, 첫 번째 열을 pick에서 edit으로 변경하면 모든 커밋 메시지를 변경할 수 있습니다.

+0

리베이스의 문제는 병합 커밋을 보존하지 않는다는 것입니다. 이제 당신은 그렇게 말했고, 나는 git 문서를 검색하여 사용할 수있는 --preserve-merges 매개 변수가 있다는 것을 알았으므로 git rebase -i --preserve-merges와 함께 작동해야합니다. 팁 주셔서 감사합니다. – danillonunes

+0

병합 커밋을 유지하지 않는 것에 대해 알지 못했습니다. 내 자식 repos는 레드 우드처럼 보입니다. – willoller

+0

'git rebase --preserve-merges' –

관련 문제