2011-04-24 3 views
1

음에 일, 나는 모범 사례를 따르지 않았고 지금 가지 붙어 정확히 무엇을 knowning 아니에요 내가 마스터 분기 및 다른 근무자식이 : 2 개발자가 마스터 지점 :(

. 디벨로퍼도 똑같이 했어 그는 원산지/주인에게 변경을 가했다. 나는 내 것을 밀어 붙이지 않았지만, 현지에서 몇 가지 커밋을했다. 이제는 내 작업장에서 더 이상 개발 작업이 없다. 어떻게 청소할 수 있습니까?

모든 것을 망치지 않고 원점/마스터에서 마지막 수정을 완료하려면 내 편을 가져 오기만해도 충분합니까?

답변

4

git pull f 롬 원점. 새 항목을 로컬 지사에 병합합니다. 그런 다음 커밋 된 로컬 변경 사항을 원본으로 푸시 할 수 있습니다. 충돌이 있으면 git에서 경고 메시지를 표시하고 플래그를 지정하여 수동으로 해결할 수 있습니다. 이것이 정확하게 자식이 만들어지고 탁월한 것으로서 걱정할 필요가 없습니다.

+0

이 종종 혼란의 근원이기 때문에 당신은 분명히 당신이 충돌을 얻을 수있는 점은 오히려 밀어보다는, 병합 이후 인 것을 확인 할 수 있습니다. –

+0

맞습니다. git는 병합시 충돌을 표시합니다. 푸시하는 동안 문제가 있으면 푸시를 거부합니다. – vindia

+0

요점은이를 명확하게하기 위해 답을 수정해야한다는 것이 었습니다. –

2

git fetch origin을 실행하면 origin/master 및 기타 모든 원격 추적 분기가 업데이트됩니다. (그들은 origin에 그 지점의 상태를 캐시처럼 본질적입니다.) 이제

을 그냥 git merge origin/master을 할 경우, 당신은 당신의 master의 역사는 origin에서 master의 역사를 포함 지금부터 git push origin master을 할 수 있어야 .

많은 사람들이 보이는 선형 기록을 유지하는 데 신경을 쓰면 밀어 넣기 전에 git rebase origin/master을 할 것입니다.

로 (대략) git fetch origin 다음 git merge origin/master 또는 git rebase origin/master을 수행하기위한 바로 가기, 당신은 할 수 있습니다 :

git pull origin master 

... 나 :

git pull --rebase origin master 
을 ...하지만 개인적으로 나는 그것이 명확 생각 별도로 가져 오기 및 병합/rebase를 수행하십시오.

+0

pull에 대한 --rebase 옵션에주의를 기울이기위한 Thx. 그 중 하나를 사용하지 마십시오 – sehe

+0

@ mark-longair, 나는 rebase 옵션에 익숙하지 않습니다. 내 로컬 변경 사항이 이미 완료 되었기 때문에이 작업을 수행 할 수 있습니까? 보류중인 개발자가 로컬 작업 저장소에 있다면 어떻게 될까요? – Luc

+0

@Luc : 깨끗한 작업 트리가 없으면 git에서 rebase를 허용하지 않으므로, 먼저 작업을 커밋해야합니다. 'git rebase'는 브랜치의 히스토리를 다시 써주기 때문에, git merge origin/master 또는 git pull origin master를 사용할 것입니다. –

1

어떤 you'l가 git rebase --continue를 해결 한 후이를 (해결해야 병합 충돌이있는 경우 새 마스터, 그럼, 물론

git rebase origin/master 
git push origin 

을 밀어 상단에 변경 사항을 리베이스하지만,이 도구는 당신을 말할 것이다 일어날 때 그것을하는 방법). 아마도 같은

git merge origin/master 
git push origin 

당신은 같은 병합을해야하고 :

당신은 당신이 가지를 (당신이 이제까지 마스터에서 그것을 복제하는 경우에도, 여전히 지사 입니다) 병합 할 수 있습니다, 선호하는 경우 충돌은 있지만 역사는 미묘하게 다릅니다 : 새로운 마스터 브랜치의 끝에있는 rebase 'groups'그룹은 병합되지만, 병합은 시간에 일어난대로 병합되어 나타납니다 (시간순 로그가 아니라 토폴로지 순서).

건배

관련 문제