특정 커밋까지 병합


372

git newbranchmaster지점에서 이름이 지정된 새로운 지점을 만들었습니다 . 지금은 몇 가지 작업을 수행하고 병합 할 한 newbranchmaster; 그러나, 나는 약간의 추가 변경 을가했으며 마지막으로 커밋 된 커밋까지 newbranch병합 newbranch하고 싶습니다 master.

나는 사용 cherry-pick했지만 올바른 옵션을 사용하라는 메시지를 표시합니다.

git checkout master    
git cherry-pick ^^^^HEAD newbranch

merge대신 git 을 사용할 수 있습니까 ?

git merge newbranch <commitid>

답변:


592

물론, master당신이해야 할 일은 다음과 같습니다.

git merge <commit-id>

분기 에서 가져 commit-id오려는 마지막 커밋의 해시 위치 는 어디 입니까?newbranchmaster

git 명령에 대한 자세한 내용은를 수행하여 확인할 수 있습니다 git help <command>. 이 경우 git help merge입니다. 그리고 문서는 mergecommand 의 마지막 인수가 <commit>...이므로 커밋 또는 여러 커밋에 대한 참조를 전달할 수 있습니다. 그래도 나는 후자를 한 적이 없다.


30
단일 커밋뿐만 아니라 이전의 모든 커밋commit-id
Dau

53
예, newbranch히스토리가 분기에서 분기 mastercommit-id전환 된 이후의 모든 커밋을 병합합니다 master. git merge <commit-id>이름없는 분기를 commit-id현재 분기로 병합하는 것으로 생각할 수 있습니다 .
KL-7

2
커밋 ID를 사용하여 마스터 이외의 두 로컬 분기간에 병합 할 수 있습니까?
skt

1
@skt,를 사용하기 전에 병합하려는 로컬 브랜치에있을 수 있습니다 git merge. 즉, 커밋 18a6fac를 브랜치 b2에서 브랜치 b1로 병합하고 싶다고 말하십시오.git checkout b1; git merge 18a6fac
XioRcaL

1
작동하지 않는 것 같습니다. 지점에있는 경우 병합하려는 AB와 C가있는 다른 지점이 있고 C에 병합하면 A와 B가 아닌 C의 변경 사항 만 가져옵니다.
ggb667

12

분기를 깨끗하게 유지하려면 다음을 수행하십시오.

git checkout newbranch
git branch newbranch2
git reset --hard <commit Id> # the commit at which you want to merge
git checkout master
git merge newbranch
git checkout newbranch2

이런 식으로 newbranch는 마스터로 병합 된 위치에서 종료되며 newbranch2에서 계속 작업합니다.


1

이에서 병합 현재 지점 폴더에 명령 아래 실행하여 <commit-id>현재의 지점에, --no-commit새로운 자동 커밋하지 않는다

git merge --no-commit <commit-id>

git merge --continue 병합으로 인해 충돌이 발생한 후에 만 ​​실행할 수 있습니다.

git merge --abort 현재 충돌 해결 프로세스를 중단하고 병합 전 상태를 재구성하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.