현재 분기의 팁이 뒤에 있기 때문에 업데이트가 거부되었습니다.
나는 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:
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
'developer tip' 카테고리의 다른 글
[NSDate date]로 현재 날짜 및 시간 가져 오기 (0) | 2020.12.07 |
---|---|
C # DllImport에서 32 비트 또는 64 비트 DLL 사용 (0) | 2020.12.07 |
Kotlin 정적 메서드 및 변수 (0) | 2020.12.07 |
기능적 구성 요소 내부의 ReactJS 수명주기 방법 (0) | 2020.12.07 |
Windows 서비스를 단위 테스트하려면 어떻게해야합니까? (0) | 2020.12.07 |