정확히 이것을하기 위해 내 자신의 자식 별칭을 만들었습니다. 나는 그것을 부르고있다 git freebase
! 기존의 지저분하고 복구 할 수없는 기능 분기를 가져 와서 다시 작성하여 커밋이 하나의 커밋으로 스 쿼치되고 지정한 분기 (기본적으로 마스터)에 기반한 동일한 이름의 새 분기가됩니다. 마지막에는 새로 "무료 기반"브랜치에 원하는 커밋 메시지를 사용할 수 있습니다.
.gitconfig에 다음 별명을 배치하여 설치하십시오.
[alias]
freebase = "!f() { \
TOPIC="$(git branch | grep '\\*' | cut -d ' ' -f2)"; \
NEWBASE="${1:-master}"; \
PREVSHA1="$(git rev-parse HEAD)"; \
echo "Freebaseing $TOPIC onto $NEWBASE, previous sha1 was $PREVSHA1"; \
echo "---"; \
git reset --hard "$NEWBASE"; \
git merge --squash "$PREVSHA1"; \
git commit; \
}; f"
다음을 실행하여 기능 분기에서 사용하십시오.
git freebase <new-base>
나는 이것을 몇 번만 테스트 했으므로 먼저 읽고 그것을 실행하고 있는지 확인하십시오. 작은 안전 조치로 시작 sha1을 인쇄하므로 문제가 발생하면 이전 분기를 복원 할 수 있어야합니다.
github의 내 도트 파일 저장소에서 유지 관리합니다 :
https://github.com/stevecrozz/dotfiles/blob/master/.gitconfig