2016-07-01 2 views
2

적극적으로 개발 된 프로젝트에서 마스터는 FollowingModel이라는 모델을 가지고 있습니다.다른 지점의 마스터와 함께 유지

나는 주인에게서 떨어져 나갔고 며칠 동안 내 지부에서 일했다. FollowingModel을 사용하는 방법을 만들었다. PR을 만들 때까지 또 다른 가지가 합쳐져 ​​FollowingModelFollowing으로 변경했습니다. 병합 충돌없이 마스터에 병합 할 수는 있지만 응용 프로그램이 손상되면 응용 프로그램이 손상 될 수 있습니다. 그 이유는 내 메서드가 이름이 변경된 모델을 호출하기 때문입니다.

이와 같은 상황에서 올바른 진행 방법은 무엇입니까? 움직이는 부분이 많은 큰 프로젝트에서 어떻게 처리됩니까?

답변

1

PR을 제출하기 전에 새로운 master 상단에 로컬 지점을 리베이스해야합니다.

  • 당신은 당신의 자신의 master
  • (master의 상단과 힘 푸시에 지점을 리베이스 업데이트하기 위해 master에 "upstream"(원격 참조 원래의 repo)에서
  • 병합 upstream/master를 가져 사용하고 메인테이너가 그/그녀를 master의 상단에 지사를 빨리 감기 할 수 있도록하기위한 목표는 남아

) 어떤 master에 당신의 방법 이름을 적응 귀하의 홍보를받을 때 지점.

그런 다음 원래의 repo에 직접 추진하는 경우 : 그것은 "고전적인"PR없는

당신은 당신이 동일한 저장소에 지점 사이의 풀 요청을 사용할 수 있다는 것을 알고 계셨습니까?
끌어 오기 요청을 사용하려면 리포지토리를 포크 할 필요가 없습니다.
내부적으로 GitHub에서, 우리는 거의 항상 브랜치간에 풀 요청을 사용합니다.

git checkout master 
git pull origin master 
git checkout featureBranch 
git rebase master 
# fix bugs 
git push --force origin newBranch 

을하지만 당신이 newBranch 작업 단 하나 가정한다 (또는이 newBranch의 첫 번째 누름입니다) :

  • 순서가된다. 그 시간을 여러 번하면, 힘을 누를 때마다 newBranch의 내역이 변경됩니다.

+0

그래서'git pull origin origin/master; git checkout featureBranch; git merge origin/master;', 버그 수정,'git push origin feature Branch'? –

+0

@DarshanChaudhary No : 오리진은 포크입니다. 원본 Repo의 최신 내용을 반영하지 않습니다. 원본 repo를 가리키는 URL로 원격 "업스트림"을 추가하십시오. 'git remote upstream/url/to/original/repo' – VonC

+0

(나의'origin'은 나의'upstream'입니다. 나는 코드 리뷰 후에'master'에 병합 된 다른 브랜치에 원래 repo를 밀고 있습니다). 나는 당신의 제안이 -'git checkout master; git pull origin master; git checkout featureBranch; git rebase master; 버그 수정,'git push origin newBranch'? 이 경우 @DarshanChaudhary 예 : –

1

일반적으로 병합하기 전에해야 할 일은 마스터에서 리베이스하는 것입니다. 그리고 당신이이 상황에서 무엇을해야하는지, 다시 마스터 링하거나 마스터를 당신의 지회로 합병하는 것입니다. 그 후에는 지점에 새로운 마스터 변경 사항이 생겨 발생하는 모든 문제를 해결할 수 있습니다. 모든 버그를 수정 한 후 마스터로 병합 할 수 있습니다.

+0

그래서, 나는 master에서 rebase feature 브랜치를 수정하고, 'git merge'를 수정하고 master 브랜치를 원격 repo에 push한다. ? 어디에서 원격 저장소의 새 지점으로 밀어 넣어야합니까? ii) 마스터 분기를 기능 분기에 병합하고, 버그를 수정하고, 기능 분기를 원격 repo로 푸시합니다. 이로 인해 git 커밋이 중복되고 내 지사의 내 기능과 관련이없는 커밋이 발생하게됩니까? –

+0

두 방법 모두 괜찮습니다. rebase 또는 merge는 중요하지 않습니다. 중요한 점은 지사에서 마스터가 변경된 것입니다. 마지막 문장의 의미는 확실하지 않지만 병합 할 때 병합 커밋을 할 수 있습니다. 리베이스 할 때 병합을 수행하지 않아도되지만 rebase는 해당 기능에 대한 전체 브랜치 기록을 다시 작성합니다. 분기. – tkausl

+0

피쳐 브랜치에서 마스터를 리베이스하는 것이 다른 방법보다 좋은 아이디어입니까? 그런 식으로 마스터 브랜치에서 커밋을 할 것이고 리포지셔닝을 통해 이력을 다시 쓸 수 있으며 원격 리포브의 동일한 지점으로 푸시 할 수 있습니다. –

관련 문제