2011-01-25 2 views
2

master 브랜치와 project 브랜치가 모두 리모컨 origin에 있다고 가정 해 보겠습니다. 작업은 주로 project 브랜치에서 이루어 지지만 때때로 버그 수정은 master으로 이동해야하므로 즉시 배포 할 수 있습니다. 결국 프로젝트가 완료되면 프로젝트의 모든 커밋을 단일 커밋으로 스쿼시 한 ​​다음 master으로 병합 할 수 있기를 원합니다. 기능 지사와 함께 일반적으로git 프로젝트 브랜치를 master와 어떻게 최신 상태로 유지해야합니까?

은 (origin에 푸시되지 않은), 우리는 단지 master와 리베이스와 우리의 메리 길에 가서 최신을 유지하지만, projectorigin에 자신의 지점이기 때문에, 나는 확실하지 않다 어떻게 기록을 원하는 방식으로 유지할 것인가? (master에서 커밋하고 project은 커밋하지 않고 병합은 이상적으로 커밋) 원격 브랜치의 히스토리를 다시 쓰는 것에 대한 안전 장치 때문에. 현재 우리는 리모컨 project을 삭제하고 올바른 기록을 사용하여이를 다시 작성하지만, 이는 분명히 차선책입니다.

리모컨 project의 기록을 다시 작성하는 데는 문제가 없습니다.이 팀은 2 인 팀이기 때문에 우리는 그 의미를 이해하고 조심스럽게 조심해야합니다. 그러나 어떻게 그것을 성취합니까?

답변

1
git checkout project 
git rebase master 
git push origin +project:project 

이제 다른 컴퓨터에서 변경 사항을 올바르게 가져 오는 방법을 알아 내려고합니다.

+0

다음 다른 클라이언트는 종종 사용하여 변경 사항을 당겨 멀리 얻을 수 있습니다 : 참조 --rebase 자식 체크 아웃 프로젝트 자식 풀 : http://www.git-scm.com/book/en/v2/Git-Branching-Rebasing#The-Perils-of-Rebasing –

2

당신은 그들이 같은 조상에서 나온만큼, 마스터 프로젝트에 가지고 모든 변경 사항을 병합합니다

git checkout project 

git merge origin/master 

자식

에로 분기를 병합 할 수 있습니다.

+0

이것은 답변의 일부일뿐입니다. – Arafangion

0

'프로젝트'의 각 변경 사항을 '마스터'로 cherrypick하려는 경우 '마스터'에 원하는 코드가 포함되도록하십시오.

그런 다음 'master'를 'project'로 다시 병합하거나 적용한 patch-id를 추적합니다. (어떤 방법 으로든 일관되게해라!). 개인적으로, '마스터'를 '프로젝트'로 다시 합치는 것이 장기적으로 더 간단하다고 생각합니다.

+0

'project'에서'master'로 코드를 가져 오는 것이 내가 걱정하는 것이 아닙니다. master를 프로젝트에 rebase하는 대신에'master'를'master'에 병합하는 것은 내가 원하는 것을 할 수 있습니다. 왜냐하면 나는 어떤 merge 커밋을 제거 할 것이기 때문에 그것을 시도해야 할 것입니다. 그것이 내가 원하는 방식으로 역사가 있는지보십시오. – adamjford

+0

병합을 스쿼시하지 말고 git log 및 gitk에 '--first-parent'옵션을 대신 고려하십시오. – Arafangion

0

피쳐 가지에 대해서는 master에 리베이스하는 것이 좋습니다. 이것은 master으로 돌아 가기 전에 많은 개발이 필요할 수있는 장기 실행 기능 브랜치에 특히 유용하며, 동시에 master은 진화합니다.

리베이스를하면 지점 변경이 적용되어 master에 적용됩니다. 결과가 새 분기가됩니다. master 자체는 그대로 유지됩니다. 당신의 project 분기가 체크 아웃 할 때

당신은이 같은 작업을 수행 할 수는 다음과 같습니다

(project) $ git rebase master 

으로 또는 명시 적으로 :

(some-branch) $ git rebase master project 

참고 : 리베이스는 지사의 역사를 다시 쓸 것이다! 그러니 조심해.

자세한 내용은 documentation을 참조하십시오.

+0

예, 현재는 지형지 물로 처리하고 있습니다. 제 질문은 특히 오랜 기간 실행되는 프로젝트 브랜치에 관한 것입니다.이 프로젝트 브랜치는 고유 한 기능 브랜치가있는 원본에서 발생합니다. – adamjford

+0

글쎄요, 아마'rebase -onto'를 사용하여 "하위 브랜치"를 리베이스하는 것이 가장 좋습니다. 하나는이 길을 간다 원격에있는 변경을 리베이스하지 않는 일반적인 조언을 무시하는 경우 – Koraktor