Programing

git : 원격에 로컬에없는 작업이 포함되어있어 업데이트가 거부되었습니다.

lottogame 2020. 12. 4. 07:44
반응형

git : 원격에 로컬에없는 작업이 포함되어있어 업데이트가 거부되었습니다.


저는 BitBucket에서 git을 사용하는 몇 명의 개발자로 구성된 팀에서 일하고 있습니다. 우리는 모두 dev브랜치에서 작업하고 master있으며 릴리스까지 추진하지 않습니다 .

개발자 중 한 명이 실수로 내 자신을 덮어 쓰는 잘못된 코드를 저질렀 고 이제 올바른 코드를 repo로 다시 푸시하려고합니다. 나는이 오류에 대해 며칠 동안 읽었으며 다음 오류가 발생하기 때문에 더 이상 저장소로 푸시 할 수 없습니다.

 ! [rejected]        master -> dev (fetch first)
error: failed to push some refs to 'https://myusername@bitbucket.org/repo_user/repo_name.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

및 지침을 따르지만 pull병합 충돌이 발생합니다. 병합 충돌에 대한 메시지를 입력 한 후 내 로컬 코드는 이제 다른 개발자가 실수로 업로드 한 잘못된 코드입니다 (에서 예상 한대로 pull). 따라서 잘못된 코드를 커밋하기 전에 복사 한 백업으로 대체하고 다시 푸시하려고하면 동일한 오류가 발생합니다.

정말 실망스럽고 팀을 돕고 기여하고 싶지만이 오류 때문에 할 수 없습니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까? 도움을 주시면 감사하겠습니다.

누군가에게 도움이된다면 커밋하기 위해 실행하는 명령은 다음과 같습니다.

git pull remotename master:dev
git add --all
git commit -m "some message"
git pull remotename master:dev
git push remotename master:dev

이 주문을 유지하면 병합 충돌이 발생하지 않을 것이라고 생각했을 것입니다. 내가 틀렸다고 생각합니다. 다시 한 번 감사합니다

업데이트 : 내가 다른 지침을 구글과 유래에 몇 시간 동안보고 및 준수했는지 추가해야합니다,하지만 난 아직 할 수없는 push받는 dev지점입니다.


git pull <remote> master:devremote/master브랜치 를 가져와 브랜치에 병합합니다 local/dev.

git pull <remote> devremote/dev분기 를 가져와 현재 분기에 병합합니다.

나는 당신이 충돌하는 커밋이 on이라고 말한 것 같아서 remote/dev아마도 가져오고 병합하려는 브랜치입니다.

이 경우 실제로 충돌을 로컬 브랜치로 병합하지 않았습니다. 작업 복사본에서 잘못된 코드를 보았다고 말했기 때문에 다소 이상합니다. 에서 무슨 일이 일어나고 있는지 확인하고 싶을 수 있습니다 remote/master.


터미널에서이 명령 사용

git push -f origin master


원격 저장소로 푸시하려고하지만 아직 가져 오지 않은 새 파일을 원격 저장소에 만들었을 때 발생합니다 Readme. 이 경우 오류가 말했듯이

자식은 업데이트를 거부합니다

로컬 환경에서 원격으로 업데이트하지 않았기 때문입니다. 따라서 원격에서 먼저 당겨

git pull

로컬 저장소를 업데이트하고 새 Readme파일을 추가 합니다. 그런 다음 업데이트 된 변경 사항을 원격으로 푸시

git push origin master

내가 고 쳤는데 내가 뭘했는지 정확히 모르겠습니다. 나는 단순히 밀고 당기는 것을 시도했다.

git pull <remote> dev 대신에 git pull <remote> master:dev

동일한 문제가 발생하면 누군가에게 도움이되기를 바랍니다.


실제로 github는 우리가 생각하는 것보다 훨씬 간단하며 git 저장소에 일부 파일을 명시 적으로 삽입 한 후에도 푸시를 시도 할 때마다 발생 하므로 문제를 해결하려면 간단히 시도해보십시오.

: git pull

그리고..

: git push

참고 : 저장소를 가져온 후 실수로 vim 편집기에서 멈춘 경우 vim 편집기를 닫고 푸시를 시도해도됩니다.


이 오류는 서버에 업데이트가 있었지만 SourceTree가 사용 가능한 업데이트를 표시하지 않았기 때문입니다 (마지막으로 확인했을 때 오프라인 이었기 때문일 수 있음). 그래서 소스 트리에서 새로 고침을했는데 이제 푸시 할 항목 1 개 대신 2 개 항목이 표시됩니다.

따라서이 오류가 발생하면 새로 고침 을 누르 거나 당겨서 다시 시도하십시오.


다음을 입력해야합니다.

$ git pull
$ git fetch 
$ git merge

를 사용 git push origin master --force하면 큰 문제가 발생합니다.


밀기

git push -f origin master


이는 일반적으로 저장소에 로컬에없는 일부 항목이 포함 된 경우 발생합니다. 따라서 변경 사항을 푸시하려면이 경우 원격 변경 사항을 통합 한 다음 푸시해야합니다.

So create a pull from remote

git pull origin master

Then push changes to that remote

git push origin master

I had a SSDT VS project first. I wanted to push the project as I had it to Github. I wanted that push to be the initial version of my repo starting the master branch. Donal's suggestion of git push -f origin master was the easiest way (that I saw) to accomplish this. Since I didn't have to worry about re-writing anything, it seemed to make sense.


You can try this: git pull origin master --rebase

참고URL : https://stackoverflow.com/questions/24357108/git-updates-were-rejected-because-the-remote-contains-work-that-you-do-not-have

반응형