developer tip

현재 분기의 팁이 뒤에 있기 때문에 업데이트가 거부되었습니다.

copycodes 2020. 12. 7. 08:24
반응형

현재 분기의 팁이 뒤에 있기 때문에 업데이트가 거부되었습니다.


나는 Git을 처음 사용하므로 나를 초보자처럼 대할 수 있습니다.

우리의 워크 플로우는 그런 것입니다. 에서 연락 할 수있는 지점 dev이 있습니다 origin/dev. 변경을 수행 할 때 dev에서 분기를 만듭니다.

git checkout -b FixForBug origin / dev

이제 FixForBug추적 하는 분기 가 있습니다 (정확한 단어라고 생각합니다) origin/dev. 따라서 내가 할 경우 git pull새로운 변화를 가져올 것입니다 origin/dev. 이제 수정 작업이 완료되면 동일한 이름의 원격 분기로 푸시합니다.

먼저 변경 사항을 풀다운 origin/dev하고 리베이스를 수행합니다.

git pull --rebase

그런 다음 변경 사항을 동일한 이름의 원격 분기로 푸시합니다.

git push origin FixForBug

이제 원격 서버에 분기가 있으며 해당 변경 사항을 승인하고 dev 분기로 다시 병합하기위한 pull 요청을 만들 수 있습니다. 나는하지 않는다 지금까지 아무것도 밀어 origin/dev자신. 나는 이것이 꽤 일반적인 작업 흐름이라고 생각합니다.

처음으로을 수행하면 git push제대로 작동하고 원격 분기가 생성됩니다. 그러나 두 번째로 푸시하면 (코드 검토 중에 누군가가 문제를 지적한다고 가정 해 보겠습니다) 다음과 같은 오류가 발생합니다.

error : failed to push some refs to ' https://github.limeade.info/Limeade/product.git '힌트 : 현재 분기의 팁이 힌트 (원격 대응) 뒤에 있기 때문에 업데이트가 거부되었습니다. 다시 푸시하기 전에 원격 변경 사항 (예 : 힌트 : 'git pull ...')을 통합합니다. 힌트 : 자세한 내용은 'git push --help'의 '빨리 감기에 대한 참고 사항'을 참조하십시오.

그러나 내가 수행하면 내가 1 커밋 git status보다 앞서 있다고 말하고 origin/dev(이치에 맞습니다) 힌트를 따르고 실행 git pull하면 모든 것이 최신 상태라고 말합니다. 내가 생각하는 내 상류 지점과 다른 지점에 밀어거야 때문입니다. 다음을 실행하여이 문제를 해결할 수 있습니다.

git push -f origin FixForBug

이 경우 변경 사항을 원격 분기에 푸시하여 (강제 업데이트) 라고 말하고 원격 분기에서 모든 것이 정상인 것처럼 보입니다 .

내 질문 :

-f이 시나리오에서 필요한가요? 일반적으로 무언가를 강요 할 때는 무언가 잘못했거나 적어도 표준 관행에 어긋나 기 때문입니다. 이 작업을 수행하는 것이 괜찮습니까, 아니면 원격 지점에서 무언가를 엉망으로 만들거나 결국 내 물건을 dev에 병합해야하는 사람에게 번거로울까요?


-f 되어 실제로 때문에 REBASE 요구. 리베이스를 할 때마다 원격 브랜치가 커밋으로 빨리 감길 수 없기 때문에 강제 푸시를 수행해야합니다. 푸시하기 전에 항상 당기기를 확인하고 싶지만 해당 문제에 대해 마스터 또는 개발자로 강제로 푸시하고 싶지 않은 경우 푸시 할 새 브랜치를 만든 다음 병합하거나 PR을 만들 수 있습니다. .


로컬 분기 FixForBug가 원격 분기 FixForBug보다 앞서 있지 않은지 확인하려면 푸시하기 전에 변경 사항을 끌어와 병합하십시오.

git pull origin FixForBug
git push origin FixForBug

사용하지 않으려면을 -f사용하십시오.

git pull

대신에

git pull --rebase

비 REBASE은의 변경을 가져옵니다 origin/dev병합 당신으로 그들을 FixForBug지점. 그런 다음 실행할 수 있습니다

git push origin FixForBug

사용하지 않고 -f.


"현재 분기의 팁이 뒤에 있기 때문에 업데이트가 거부되었습니다."라는 메시지가 표시 될 때 Azure DevOps에서 사용한 명령은 다음 명령입니다.

git pull origin master

(또는 새 폴더로 시작하여 복제를 수행 할 수 있음) ..

이 답변은 제기 된 질문을 다루지 않습니다. 특히 Keif가 위에 답변했지만 질문의 제목 / 제목 텍스트에 대한 답변을 제공하며 이는 Azure DevOps 사용자에게 일반적인 질문이 될 것입니다.

나는 위의 Keif의 대답에서 "당신은 항상 밀기 전에 당기기를 원할 것입니다."라고 언급했습니다!

Git 명령 줄 도구와 함께 Git Gui 도구도 사용했습니다.

(Git Gui 내에서 "git pull origin master"명령 줄 명령에 해당하는 작업을 수행하는 방법을 모르기 때문에 명령 줄로 돌아 왔습니다.)

A diagram that shows various git commands for various actions that you might want to undertake is this one:

enter image description here


It must be because of commit is ahead of your current push.

1) git pull origin "name of branch you want to push"

2) git rebase

if git rebase is successful , then good . Otherwise, you have resolve all merge conflicts locally and keep it continuing until rebase with remote is successful.

3)git rebase --continue

참고URL : https://stackoverflow.com/questions/39399804/updates-were-rejected-because-the-tip-of-your-current-branch-is-behind

반응형