새 분기에서 여러 커밋을 되돌리고 기존 분기 중 하나와 결과를 병합하려면 쉘 스크립트와 함께 도움이 필요합니다. 저는 프로젝트에 dev, live, stage라는 3 개의 브랜치가 있습니다. 무대 분기는 무대 웹 사이트에서 테스트하는 변경 사항을위한 것이며, 클라이언트의 승인 후에 라이브 지점으로 이동해야합니다.git 자동 되돌리기 커밋 세트
문제는 클라이언트가 배포를 위해 모든 단계 변경 사항을 승인하지 않을 수 있다는 것입니다 (예를 들어, 각 스테이지 분기에서 커밋 된 1,2,3,4,5 티켓을 완료했지만 클라이언트가 1, 3,4 즉시 배포해야 함). 따라서 작업은 스테이지 브랜치의 특정 커밋을 라이브와 병합하는 것입니다. 내 솔루션은 다음과 같습니다
- 체크 아웃 새로운 지점은
- 되돌리기 내가 배포 지점에서 라이브
지금까지 내가 복귀있어 변경
git filter-branch -f --commit-filter '
if [ "$GIT_COMMIT" = "8f3859d5f1a5bb75d50f933a0277ba4bca4f2abc" ];
then
git revert $GIT_COMMIT --no-edit
git commit -m "Cleaning up revision: $GIT_COMMIT"
fi' HEAD
. 그러나이 스크립트를 적용한 후 난 항상 메시지를
Rewrite 8f3859d5f1a5bb75d50f933a0277ba4bca4f2abc (6/13)error: Your local changes would be overwritten by revert.
힌트가 나타납니다 변경 사항을 커밋 또는 진행을 숨기고.
그러나 git status 명령은 커밋 변경 사항이 없음을 보여줍니다. 그래서, 주요 질문은 수동으로 명령을 실행할 때 왜 작동합니까? 스크립트 내에서 명령을 격리 할 때가 아닙니다. 오후 8시 30 분 P.S. 내가 사용하고있다 Git for Windows
http://stackoverflow.com/questions/11753533/need-to-go-back-to-prev-commit-in-git-how#comment15603638_11753734 도움이 될까요? – VonC
각 티켓마다 별도의 기능 분기를 사용하는 것을 고려해야합니다. 그러면 클라이언트가 승인 한 것을 병합하고 되돌릴 때의 혼란을 피할 수 있습니다. –