마스터와 개발 브랜치 사이의 “git pull”또는 “git merge” 사항을 병합해야 develop하지만 결국 모든

나는이 master지점과 develop몇 가지 변경 작업에 대한 분기를. 에서 master로 변경 사항을 병합해야 develop하지만 결국 모든 것을에서 develop로 병합 master합니다. 두 가지 다른 워크 플로를 염두에두고 있습니다.

  1. git pull origin masterdevelop지점
  2. git merge masterdevelop지점

이를 수행하는 가장 좋은 방법은 무엇이며 왜 그런가요?



답변

리베이스에주의하십시오. 개발 브랜치를 다른 사람과 공유하는 경우 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/masterotherRemote/master입니다.

경우 develop로컬 저장소에 존재하고, 항상 최근이 기반으로 origin/master커밋, 당신은 그것을 호출해야 master하고, 직접이 작동합니다. 그것은 당신의 인생을 단순화하고, 실제로있는 그대로 제시합니다 : 당신은 master지점 에서 직접 발전하고 있습니다.

develop공유 된 경우 에 기반으로하지 말고에 master다시 병합하면됩니다 --no-ff. 에 개발 중입니다 develop. master그리고 develop우리가 다른 일을 할 원하기 때문에, 다른 이름을 가지고 있고, 별도의 유지. 와 동일하게 만들지 마십시오 rebase.


답변