2013-08-10 2 views
1

나는 힘내를 사용하고 있으며, 새로운 것을 알고있다. 나는 프로젝트의 최신 코드를 가지고 있으며 새로운 기능을 다루고있다. 그러나 나는 그 새로운 기능에 대해 연구하고 있는데, 필자가 필요로하는 수정본을 이메일로 받았지만, 아직 완성되지 않았다. 불행히도 새 기능 파일이 필자가 필요로하는 수정과 공통적이지 않더라도 새로운 기능 파일이 끌어 당기는 것을 막는 것처럼 보이기 때문에 svn (와 같이 병합)과 같은 최신 버전을 구할 수는 없습니다. 두 시나리오 모두를 수행하는 가장 좋은 방법은 무엇입니까? 1) 시나리오 2) 공통 파일을 수정했습니다.)? 감사합니다 w힘내 - 새로운 기능을 사용하면서 최신 수정을 얻는 방법?

수정 프로그램을 가져오고 내 기능을 계속 사용할 수 있습니까? 끝나면 은신처를 터뜨릴까요?

+0

"수정"태그는 FIX 프로토콜 용이며 일반 코드 수정용이 아닙니다. 나중에 태그를 추가하는 것에 유의하십시오. –

답변

2

원래 포스터는 묻는다 :

내가 숨겨 놓은 할까

는 풀 수정을 얻고, 제 기능을 작동을 계속합니까? 끝나면 은신처를 터뜨릴까요?

당신은 하나 개의 옵션이다 그. 다음과 같이 다른 옵션은 다음과 같습니다

원래 포스터는 묻는다 :

무엇 모두 시나리오에 그것을 할 수있는 가장 좋은 방법입니다 :

  1. 내가 새 파일과 수정 된 공통 파일이 없다가 나는 필요하다?
  2. 공통 파일이 수정되었습니다 (기본적으로 svn과 같은 빠른 로컬 병합을 원합니다)?

당신이 가지고있는 새 파일을 커밋 할 준비가되어 있다면, 당신은 그냥 다음 병합 또는 REBASE을 커밋 할 수 있습니다.

git commit -am "Commit message here" 
git fetch <remote-with-fix> 

# Rebase your work on top of fix 
git rebase <remote-with-fix>/<branch-with-fix> 

# Or do a merge instead 
git merge <remote-with-fix>/<branch-with-fix> 
: 당신이 병합 또는 REBASE를 할 경우 당신은 또한 당신이 가져 오는하고있는 커밋에서 수정 수정 된 파일이 정말 문제가되지 않는 경우가 충돌 어느 쪽이든를 해결해야 할 수있는 기회가있다

새 파일이 커밋 할 준비가되지 않은 경우 임시 커밋을 한 다음 수정 사항을 가져온 다음 작업을 맨 위에 리베이스 한 다음 혼합 재설정으로 임시 커밋을 실행 취소 할 수 있습니다.

git commit -am "Temporary commit" 
git fetch <remote-with-fix> 
git rebase <remote-with-fix>/<branch-with-fix>  
git reset head^ 
+0

'fetch'은 당신의 친구입니다. – mgarciaisaia

0

수정 사항이있는 지점에 수정 사항 외에 다른 것이 없다면 간단히 병합하십시오.

분기는 당신이 당신의 현재 지점에서 다음 체리 픽을 원하지 않는 다른 물건이있는 경우

. 체리 피킹에주의하십시오. 커밋 히스토리를 실제 병합으로 추적하지 않으므로 나중에 이러한 분기를 서로 병합 할 경우 충돌이 발생할 수 있습니다.

나는 당신이 첫 번째 경우라고 생각합니다. 과소 평가할 필요가 없습니다. 지점을 병합하면됩니다. 일반적인 파일이 수정이있는 경우

, 당신은 당신이 수동으로 해결해야 할 것이다 충돌을 얻을 수 있습니다.

+0

기능 분기가 원래 수정 사항이있는 분기와 병합 될 때 cherry-picking으로 인해 충돌이 발생합니까? –

+0

그것은 그렇지 않을 수도 있습니다. 확실히 추한 것입니다. 나는 나의 대답을 업데이트했다. – janos

+0

현재 브랜치에 수정 사항을 체리로 집어 넣으면 현재 브랜치에 커밋 된 것이 있으면 원래의 것과 같은 __new__ 커밋을 만듭니다. 그러면 지점을 밀고 나면 문제가 생길 것입니다. "공공 재판을 재개하지 마십시오"라는 규칙이 좋습니다. 고정 브랜치 맨 위의 커밋을 체리 선택하는 것이 가장 좋을 것입니다. 그것은 실제로 리베이스가하는 일입니다. – mgarciaisaia