2017-10-18 3 views
1

선형 커밋 내역에 커밋이 있습니다. 어떤 시점에서 테스트에 유용했지만 프로덕션에 있어서는 안되는 기능을 추가했습니다. 그 기능을 가진 testing 브랜치를 나눠 쓰고 싶지만 나중에 mastertesting을 리베이스 할 수 있기를 원합니다. 그래서 내 현재 커밋 보면 같은 :Git이 기능을 제거하지만 다른 브랜치는 그대로 유지

A-B-C-D-E 

내 솔루션 또 다른 기능을 제거하는 Fmaster에 커밋 추가 할 수 있었다.을 그런 다음 F 커밋 지점 testing를 작성하고 복귀 :

# Do work to remove feature 
git commit -a -m "F" 

git checkout -b testing 
git revert master 

이제 커밋의 나 역사는 다음과 같습니다 F'F의 복귀이다

A-B-C-D-E-F (master) 
      \ 
      F' (testing) 

.

이렇게하는 것이 가장 좋은 방법입니까? 제가 누락 된 것이 더 쉬울 수 있습니까?

답변

1

내 작업 방식이 더 쉽지는 않지만 내 기록을 남기는 방식을 선호합니다.

대화 형 rebase를 reorder the commits으로 수행하여 테스트 커밋을 맨 위에 올릴 수 있습니다.

그런 다음 위의 커밋이있는 마스터에서 새 테스트 분기를 만들 수 있습니다.

그런 다음 마스터를 리베이스하거나 포인터를 재설정하여 마스터 분기에서 상위 커밋을 삭제할 수 있습니다.

+0

OP는 여전히이 기술로'master'에'testing'을 rebase 할 수 있습니까? – bfontaine

+0

네, 왜냐하면 이것의 끝에'testing'은'master'와 스택 맨 위의 하나 커밋입니다. – dillius

+0

불행하게도이 문제는 역사상 서로가 아닌 여러 커밋의 결과입니다. 이 솔루션은 또한 코드를 체크 아웃하고 다시 병합하고자하는 다른 모든 사람들을 망쳐 놓습니다. 좋은 대안이긴하지만 그 중 하나를 신경 쓰지 않는다면 - upvoted. – Alex

관련 문제