2008-11-16 4 views

답변

18

당신은 파이프 같은 git-diff 둘 사이의 커밋 출력 할 수 있습니다

git diff fa1afe1 deadbeef > patch.diff 

는이 같은 자신의 작업 공간에 개발자로 patch.diff을 보내고 그에게 git-apply를 보자

git apply patch.diff 

다른 개발자가 이미 자신의 저장소에있는 커밋을 사용할 수있는 경우에는 다음과 같이 병합하지 않고 항상 자신의 파이프로 연결할 수 있습니다.

git apply < git diff fa1afe1 deadbeef 

그런 다음 addcommit의 차이점을 확인할 수 있습니다. the usual way.


여기에 패치를 공용 (공용)으로 다시 병합해야 할 때 흥미로운 부분이 있습니다.

A---B---C---D   master, public/master 
    \ 
     E---C*---F  feature_foo 

당신은 (feature_foo 이름이 예에서) 토픽 브랜치를 업데이트 git-rebase를 사용할 수는 상류의 머리에 : C* 마스터 분기 C에서 적용된 패치가 어디 다음 개정 나무를 생각해 보자.

git rebase master feature_foo 

힘내과 같이 개정 나무를 재 배열하고 또한 패치 자체 적용됩니다 :

A---B---C---D   master, public/master 
      \ 
       E*---F* feature_foo 

이제이 될 것 상류 지점에 병합을 사용하면 다음과 같은 것이에 입력 할 때 무슨 의미하는 것입니다 쉬운 빨리 감기 병합. 또한 새로운 E*F*이 각각 이전 EF으로 작동하는지 확인하십시오.

동일한 단계를 사용하여 다른 개발자의 지점에 대해 동일한 작업을 수행 할 수 있지만 공용 저장소에서 수행하는 대신 개발자 저장소의 버전이 fetching입니다. 이렇게하면 이미 다른 개발자에게 패치를 요청할 필요가 없습니다.

에 공개 브랜치을 리베이스하지 마십시오. 명령은 사람들이 의존하는 브랜치에 대해 원하지 않는 git 히스토리를 다시 쓰고 원격 저장소에 병합 할 때 엉망이 될 것이기 때문입니다. 또한 integrate often을 잊어서 팀 내 다른 사람들이 변경 사항에 참여할 수 있습니다.

+0

나중에 git format-patch를 사용하여 패치를 포맷하고 git am을 사용하여 패치를 적용하고 커밋 할 수 있음을 알게되었습니다. 예 : git 형식 패치 -k --stdout R1 ... R2 | git am -3 -k – Spoike

2

, 파이프 출력으로 선택의 VCS에서이 작업을 수행하는 방법에 대해 설명하십시오 방법을 알고있는 경우 언제나처럼 맹목적으로 P는 적용되지 않습니다

patch -p0 -i mypatch.diff 

을 사용하면 다음 변경 사항을 되돌리고 나중에 패치를 적용 할 수있는 등

svn diff > mypatch.diff 

같은 파일에 SVN은 diff의 코드에 손을 대고 항상 먼저 검사하십시오.

패치가 만들어진 이후 원본 파일이 충분히 변경된 경우 패치를 통해 소스 코드가 손상 될 수도 있습니다.

코드를 체크인 할 때 병합 충돌이 발생하지 않을 것이라고 보장 할 수도 없습니다. git에서

2

BZR는 상대방이 단순히 병합에 "OK"버튼을 클릭 패치 주위 구부릴 덜있을 수 있도록 당신을 위해 패치를 보내는 의미하는 "통합 지침"을 보내 처리/적용 등

그냥 : $ bzr send -o mycode.patch

+0

bzr send는 두 개의 다른 브랜치간에 병합 지시어 만 생성합니다. 단일 커밋 또는 체리 따기와 같은 패치를 만드는 방법과 이러한 패치를 적용 할 때 병합이 작동하는 방법을 찾고있었습니다. – Spoike

2

Subversion에는이 작업을 수행하는 좋은 방법이 없습니다. 예, 당신은 svn diff + patch를 사용할 수 있습니다. 그러나 이것은 병합을하기 전까지 만 문제를 연기 할 것이고 그때까지 잊었을 가능성이 있습니다.

Subversion에서 수행하는 방법은 분기를 작성하고 분기에서 커밋 한 다음 수신자에게 분기로 전환하도록 요청하는 것입니다. 그런 다음 일반적인 방법으로 트렁크로 분기를 다시 병합 할 수 있습니다.

관련 문제