2015-01-23 2 views
0

이것은 완전한 대답을 얻지 못한 merge branch that was created from old commit to master과 같은 질문입니다. 그래서 난 내 development 지점이전 커밋에서 만든 분기를 병합하는 방법

$ git commit 
commit 1 

모두 좋은에 다음과 같은 상황이있다.

파일 변경 a, bc.

$ git commit 
commit 2 

는 자동화 된 테스트 만 b이 병합

$ git commit 
commit 4 
$ git checkout development 
$ git merge failed 

테스트

, 수정, b

롤백 파일

$ git commit 
commit 3 
$ git checkout 2 
$ git branch failed 

찾기 오류를 실패했습니다. ac은 그렇지 않습니다. 나는 물리적으로 파일을보고 그들이 다른 것을 확인한다. git diff development..failed은 그것들을 다른 것으로 더 보여줍니다.

모든 파일이 필요합니다. 내가 할 때 git merge 나는 모든 것을 가져올 것으로 기대, 기본적으로 동일합니다.

파일을 병합하기 위해 사소한 변경을 가할 수 있습니다. failed 분기를 복사하여 파일을 development에 수동으로 복사 한 다음 그 방법으로 파일을 복사하면 다른 것이있을 것입니다. 그냥 failed을 새로운 development 브랜치로 사용하도록 강제 할 수 있습니다. 그러나이 모든 것은 잘못된 대답으로 느껴질 수 있습니다. 특히 실제 상황이 단지 3 개의 파일보다 훨씬 복잡하고 인적 오류의 가능성이 크다고 생각할 때 더욱 그렇습니다.

어떻게 올바르게 수행 할 수 있습니까? 이 failed 분기와 다른 모든 파일을 development으로 올바르게 병합하려면 어떻게해야합니까?

감사합니다.

+0

맞습니까? 당신은'a'와'c'가'failed'를 병합 한 후 (* commit 2 *에서 시작한) * commit 2 *와 동일하길 원하십니까? –

+0

'git checkout 2'를 실행하고'git branch failed '명령을 실행하면'failed'라는 이름의 브랜치를 생성하지 않습니다. 나는 분리 된 HEAD 상태에 머물러 있으며 git warnings 상태로'development'로 전환 할 때 커밋을 잃을 것입니다. 당신은'failed' 브랜치가 생성되었는지 확신합니까? –

+0

내가 한 일을 정확히 기억하지 못했을 것이다. 내가하고 싶은 일을하는 방법을 알아 내려고하는 맨 페이지에 대해 내 머리를 많이 터뜨 렸지만, 최종 결과는 "실패한" 커밋 2 "나는 파일"b "를 수정했습니다. 이 지점, 3 개의 파일 모두를 다시 개발에 병합하고 싶습니다. (다른 곳에서는이 특정 파일을 변경 한 이후로 다른 곳을 변경했습니다.) – WizardStan

답변

0

정답은 되돌리기와 병합을 되돌리기 만하면됩니다.

내 특정 상황에서 다른 개발자는 이미 체리 피킹에 필요한 되돌온 코드를 변경했습니다.

관련 문제