이것은 this answer에 사용 된 것과 동일한 방법을 사용하여 수행 할 수 있습니다.
먼저 관련 커밋을 찾아야합니다.
git log --format=format:"%H %s" master..HEAD | grep -E "deleteme|temporary"
이 당신에게 deleteme
또는 master
하고 현재 지점 사이 temporary
를 포함하는 커밋 메시지와 커밋의 목록을 제공합니다 : 당신은 같은 뭔가 그렇게 할 수 있습니다. 이것은 삭제해야하는 커밋입니다.
저장이 bash 스크립트 어딘가에 당신은 그것을 액세스 할 수 있습니다
#!/bin/bash
for sha in $(git log --format=format:"%H %s" master..HEAD | grep -E "deleteme|temporary" | cut -d " " -f 1)
do
sha=${sha:0:7}
sed -i "s/pick $sha/drop $sha/" [email protected]
done
은 다음과 REBASE을 실행
GIT_SEQUENCE_EDITOR=/path/to/script.sh git rebase -i
이 자동으로 커밋 메시지에 deleteme
또는 temporary
를 포함하는 모든 커밋을 삭제합니다. 내 다른 답변에서 언급 한 바와 같이
:
사용할 위탁하는 계산하기 위해 실행되는 어떤 명령을 사용자 정의 할 수 [이 스크립트는 허용하지 않습니다, 그러나 이것은 문제가있는 경우, 당신은 아마 통과 할 수 환경 변수에서 사용자 정의 할 수 있습니다.
필수 경고하십시오 REBASE 역사를 다시 쓰는 때문에이이 지점에서 작업을 다른 사람을 위해/위험 중단 할 수 있습니다. 당신이 협력하고있는 누구와도 당신이 한 일을 분명하게 전달하십시오.
누군가가 문제를 찾습니다;) –
의도하지 않은 결과가 발생 했습니까? – JeremyKun
그 모두를 할 수있는'filter-branch'를 시도해보십시오. –