답변:
'ours'병합 전략을 사용할 수 있습니다 :
$ git checkout staging
$ git merge -s ours email # Merge branches, but use our branch head
;
각 명령의 끝에 왜 ? 나는없이 ;
있었고 그것은 효과가있는 것 같습니다. 또한이 답변은 불완전합니다. 세 번째 단계는 이전 지점 (이메일)을 체크 아웃 한 다음 준비와 다시 병합하는 것입니다.
git rebase -s theirs <oldbranc> <newbranch>
어느 지점에 관계없이 잘 작동합니다. rebase에서 '그들의'는 실제로 새로운 브랜치입니다. 왜냐하면 '우리'는 현재 커밋을 적용하는 헤드이기 때문입니다.
'email'과 'staging'두 가지를 동일하게하려면 'email'분기에 태그를 지정한 다음 'email'분기를 'staging'하나로 재설정하십시오.
$ git checkout email
$ git tag old-email-branch
$ git reset --hard staging
'이메일'브랜치에서 '스테이징'브랜치를 리베이스 할 수도 있습니다. 그러나 결과에는 두 가지의 수정 사항이 포함됩니다.
git checkout
, git check
내 지식에 존재하지 않는
email
지점의 헤드는 동일한 헤드를 가리켜 야하며 staging
둘 다 동일한 커밋, 동일한 히스토리를 갖습니다.
나는 몇 가지 답변을 보았으며 그것이 충돌없이 해결할 수있는 유일한 절차입니다.
branch_old의 branch_new에서 모든 변경 사항을 원하면 다음을 수행하십시오.
git checkout branch_new
git merge -s ours branch_old
git checkout branch_old
git merge branch_new
이 네 가지 명령을 적용하면 문제없이 branch_old를 푸시 할 수 있습니다
다른 답변은 나에게 올바른 단서를 주었지만 완전히 도움이되지 않았습니다.
$ git checkout email
$ git tag old-email-branch # This is optional
$ git reset --hard staging
$
$ # Using a custom commit message for the merge below
$ git merge -m 'Merge -s our where _ours_ is the branch staging' -s ours origin/email
$ git push origin email
우리의 전략과 합병하는 네 번째 단계가 없다면, 푸시는 빨리 감기가 아닌 업데이트로 간주되며 GitHub에 의해 거부됩니다.
merge -m 'This is not my beautiful house.' -s ours origin/email
.
나와 같고 병합을 처리하지 않으려면 병합 대신 힘을 사용하지 않고 위의 단계를 수행하면 산만 한 로그 용지 흔적이 만들어집니다.
git checkout email
git reset --hard staging
git push origin email --force
참고 : 이것은 절대로 다시 이메일로 내용을보고 싶지 않은 경우에만 해당됩니다.
어때요?
git branch -D email
git checkout staging
git checkout -b email
git push origin email --force-with-lease
다른 답변은 불완전하게 보였습니다.
아래에서 전체를 시도했지만 정상적으로 작동했습니다.
참고 :
1. 아래에서 시도하기 전에 저장소를 안전한 곳에 보관하십시오.
세부 :
모든 개발 dev에 지점에서 발생 1.
2. 품질 보증 분기 DEV 단지 같은 카피
시간 3 시간, 개발 코드 요구 / 덮어 쓰기에 대한 품질 보증 지점을 이동합니다
dev 분기에서 qa 분기를 덮어 써야합니다.
1 부 :
아래 명령으로 이전 qa가 최신 개발자로 업데이트되었습니다.
git checkout dev
git merge -s ours qa
git checkout qa
git merge dev
git push
마지막 푸시에 대한 자동 주석은 다음과 같습니다.
// Output:
// *<MYNAME> Merge branch 'qa' into dev,*
이 주석은 역순으로 보입니다. 위 순서도 역순으로 보입니다.
2 부:
다음은 예상치 못한 새로운 로컬 커밋 개발, 불필요한 커밋
을 버리고 개발에 영향을 미치지 않는 것입니다.
git checkout dev
// Output:
// Switched to branch 'dev'
// Your branch is ahead of 'origin/dev' by 15 commits.
// (use "git push" to publish your local commits)
git reset --hard origin/dev
// Now we threw away the unexpected commits
3 부 :
모든 것이 예상 한대로 확인하십시오.
git status
// Output:
// *On branch dev
// Your branch is up-to-date with 'origin/dev'.
// nothing to commit, working tree clean*
그게 다야.
1. 오래된 품질 보증 이제 새로운 dev에 지점 코드를 덮어 씁니다
2. 지역이 깨끗한 (원격 원산지는 / dev는 그대로입니다)