최근 직장에서git
경영진에게 다음과 같은 질문을 받았습니다.
저는 dev
브랜치와 feature
브랜치 두 개를 가지고 있습니다. 현재
라는 질문이 있습니다.
먼저 feature
브랜치에서 git pull origin feature
작업을 수행하고 로컬 브랜치를 최신으로 업데이트한 후 git rebase dev
작업을 수행하고 마지막으로 git push origin feature
git pull origin feature
작업을 다시 실행하면 빈 콘텐츠 Showing 0 changed files
가 포함된 병합 로그가 생성됩니다.
질문, 이전에 이미
pull
최신 버전으로 업데이트를 수행한 이유는 무엇인가요? 제 작업 과정에 문제가 있는 것인지 모르겠습니다. 조언 부탁드립니다. 감사합니다!
世界只因有你2017-05-02 09:21:29
질문은 다음과 같아야 합니다.
우선, 기능 분기는 원격 분기입니다. 리베이스한 후에는 로컬 기능 분기가 개발 분기에 있지만 기능의 원격 추적 분기인 원본/기능은 여전히 원래 위치에 있습니다. 그런 다음 이렇게 push하면 git은 이를 허용하지 않습니다. push할 때 git은 해당 브랜치의 이전 커밋을 확인합니다. 현재 브랜치의 마지막 커밋이 원격 브랜치의 최신 커밋이 아닌 경우 git은 제출을 방지합니다. . 새로운 지점을 따라가려면 당겨야 합니다.
또한 추적 분기를 로컬 분기와 분리하는 것은 좋은 생각이 아닐 수도 있습니다. 추적 분기를 삭제한 다음 로컬 분기의 구조를 원격 끝과 동기화하는 것이 목적인 경우. 먼저 원격 기능을 삭제하면 git push origin :feature
로컬 추적 분기가 사라질 수 있습니다. 그러면 그냥 밀면 됩니다.
PHP中文网2017-05-02 09:21:29
죄송합니다. 다시 테스트해본 결과 제가 생각했던 것과 전혀 다르다는 것을 알았습니다.
실제로 거부가 발생하고 다시 당기고 밀기만 가능하며 충돌이 발생할 수 있습니다.
[내 실험에 따르면 리베이스 후 원본/기능이 포크되었으므로 git gui를 사용하여 볼 수 있습니다. 리베이스는 커밋 간의 상위-하위 관계를 변경하기 때문입니다.]
http://stackoverflow.com/questions/8939977/git-push-rejected-after-fea...