나는이 master
지점과 develop
몇 가지 변경 작업에 대한 분기를. 에서 master
로 변경 사항을 병합해야 develop
하지만 결국 모든 것을에서 develop
로 병합 master
합니다. 두 가지 다른 워크 플로를 염두에두고 있습니다.
git pull origin master
에develop
지점git merge master
에develop
지점
이를 수행하는 가장 좋은 방법은 무엇이며 왜 그런가요?
답변
리베이스에주의하십시오. 개발 브랜치를 다른 사람과 공유하는 경우 rebase는 문제를 일으킬 수 있습니다. Rebase는 현지 지점에만 적합합니다.
경험상 분기를 원점으로 밀었다면 리베이스를 사용하지 마십시오. 대신, merge를 사용하십시오.
답변
이 워크 플로는 나에게 가장 효과적입니다.
git checkout -b develop
… 일부 변경 …
통지 마스터가 업데이트되었습니다 …
… 변경 사항을 커밋하여 개발 …
git checkout master
git pull
… 그런 변화를 다시 개발하게 …
git checkout develop
git rebase master
… 더 많이 변경하십시오 …
… 그들이 개발하도록 커밋 …
… 마스터에게 합병 …
git checkout master
git pull
git merge develop
답변
이런 종류의 일에 가장 적합한 방법은 아마입니다 git rebase
. 이를 통해 마스터에서 개발 브랜치로 변경 사항을 가져올 수 있지만 모든 개발 작업은 커밋 로그의 맨 위에있는 상태에서 마스터의 항목으로 남겨 둡니다. 새 작업이 완료되면 마스터로 다시 병합하는 것이 매우 간단합니다.
답변
개발 브랜치를 다른 사람과 공유하지 않는 경우 마스터가 업데이트 될 때마다 리베이스를 리베이스 할 것입니다. 그러면 개발을 다시 마스터로 병합하면 히스토리 전체에서 병합 커밋이 발생하지 않습니다. 이 경우 워크 플로는 다음과 같습니다.
> git clone git://<remote_repo_path>/ <local_repo>
> cd <local_repo>
> git checkout -b develop
....do a lot of work on develop
....do all the commits
> git pull origin master
> git rebase master develop
위의 단계는 개발 브랜치가 항상 마스터 브랜치의 최신 변경 사항 위에 있는지 확인합니다. 브랜치 개발을 마치고 마스터의 최신 변경 사항에 기반을두면 다시 병합 할 수 있습니다.
> git checkout -b master
> git merge develop
> git branch -d develop
답변
내 경험 법칙은 다음과 같습니다.
rebase
와 나뭇 가지에 같은 이름 ,merge
그렇지.
동일한 이름의 예는 master
, origin/master
및 otherRemote/master
입니다.
경우 develop
로컬 저장소에 존재하고, 항상 최근이 기반으로 origin/master
커밋, 당신은 그것을 호출해야 master
하고, 직접이 작동합니다. 그것은 당신의 인생을 단순화하고, 실제로있는 그대로 제시합니다 : 당신은 master
지점 에서 직접 발전하고 있습니다.
develop
공유 된 경우 에 기반으로하지 말고에 master
다시 병합하면됩니다 --no-ff
. 에 개발 중입니다 develop
. master
그리고 develop
우리가 다른 일을 할 원하기 때문에, 다른 이름을 가지고 있고, 별도의 유지. 와 동일하게 만들지 마십시오 rebase
.