"리모트에 로컬에 없는 작업이 포함되어 있어 업데이트가 거부되었습니다." 오류
저는 Giton Bitbucket을 사용하여 몇 명의 개발자와 팀을 구성하고 있습니다.우리는 모두 dev 브랜치를 개발 중이며, 출시 전까지는 마스터를 추진하지 않습니다.
개발자 중 한 명이 실수로 제 코드를 덮어쓰는 잘못된 코드를 범했고, 이제 저는 올바른 코드를 저장소로 다시 밀어 넣으려고 합니다.이 오류에 대해 며칠 동안 읽었는데 다음 오류가 발생하여 더 이상 리포지토리로 이동할 수 없습니다.
! [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.
, 지항따르고을사시나는,고▁the따▁i,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
이 주문을 지키면 병합 충돌이 발생하지 않을 것이라고 생각했을 것입니다.제가 틀렸나 봐요.
나는 구글과 스택 오버플로에서 몇 시간 동안 찾아보고, 다른 지침을 따랐지만, 여전히 개발 지점에 Git 푸시를 할 수 없습니다.
"force push"를 사용하여 Git가 수행하는 모든 검사를 재정의할 수 있습니다.터미널에서 다음 명령을 사용합니다.
git push -f origin master
그러나 원격에 있는 기존 작업을 무시할 수 있습니다.원격 기록을 로컬 복사본과 동일하게 효과적으로 다시 작성하고 있습니다.
원격 저장소에 푸시하려고 하지만 아직 풀되지 않은 새 파일을 원격에 만들었을 때 발생합니다.Readme이 경우 오류가 나타내는 바와 같이
git는 업데이트를 거부합니다.
로컬 환경에서 업데이트된 원격을 사용하지 않았기 때문입니다.원격에서 먼저 당겨야 합니다.
git pull
로컬 "" "" "" " ""가 됩니다.Readme changes to remote . 그런 다음 업데이트된 변경사항을 원격으로 푸시
git push origin master
git pull <remote> master:dev.remote/master해서 당신의 기하여것병합니다합으로의분신당으로 하세요.local/dev분점.
git pull <remote> dev.remote/dev분기하고 현재 분기에 병합합니다.
하는 커밋이 충약생당신돌에 말한 것 .remote/dev그래서 그것이 아마도 당신이 가져오고 병합하려고 했던 분기입니다.
그 경우, 당신은 실제로 충돌을 당신의 지역 지점에 병합하지 않았습니다. 당신이 작업 복사본에서 잘못된 코드를 봤다고 말했기 때문에 약간 이상합니다.무슨 일이 일어나고 있는지 확인해 보는 것이 좋을 것입니다.remote/master.
이 문제는 일반적으로 레포에 로컬에 없는 일부 항목이 포함되어 있을 때 발생합니다.따라서 변경사항을 적용하기 위해서는 원격 변경사항을 통합한 후 적용해야 합니다.
원격에서 풀을 생성합니다.
git pull origin master
그런 다음 변경 사항을 해당 리모컨에 푸시
git push origin master
사용해 볼 수 있습니다.git pull origin master --rebase
다음을 입력해야 합니다.
git pull
git fetch
git merge
를 사용하는 경우git push origin master --force당신은 큰 문제를 겪을 것입니다.
밀어넣기
git push -f 오리진 마스터
이 문제를 해결한 방법은 다음과 같습니다.
git pull origin mastergit push origin master
이 문제는 일반적으로 원격 분기가 업데이트되지 않은 경우에 발생합니다.그리고 이후 "커밋 메시지를 입력하십시오"와 같은 오류가 발생하면 이를 참조하십시오(메샤오후 왕 답변이 작동했습니다 :).
고쳤는데 정확히 뭘 했는지 모르겠어요.다음을 사용하여 간단히 밀고 당기기를 시도했습니다.
git pull <remote> dev에 git pull <remote> master:dev
git pull --기본 시작 마스터
git 푸시 오리진 마스터
git push -f 오리진 마스터
경고 git 푸시 - f 오리진 마스터
- 기존 리포지토리를 강제로 푸시하고 이전 리포지토리도 삭제하므로 이전 버전보다 이전 버전이 필요하지 않은 경우 도움이 될 수 있습니다.
실제로 Github은 우리가 생각하는 것보다 훨씬 간단하며 Git 저장소에 일부 파일을 명시적으로 삽입한 후에도 푸시를 시도할 때마다 발생합니다. 따라서 문제를 해결하려면 시도해 보십시오.
기트풀
그리고 나서..
기트 푸쉬
참고: 저장소를 풀링한 후 실수로 vim 편집기에 갇혔다면 걱정하지 마시고 vim 편집기를 닫고 푸시를 시도해 보십시오 :)
아래 단계를 수행했습니다.마침내 그것은 잘 작동합니다.
스텝
잽싸게
git 상태(상태 확인용)
git add . (모든 변경 파일(.) 추가)
-mgit commit -m"<pass your comment>"
git 원격 추가 오리진"<pass your project clone url>"
pull --allow-get-get-get pull -- ▁--."<pass your project clone url>" 노릇을 취득했습니다
-u u 쉬푸깃-u"<pass your project clone url>" 노릇을 취득했습니다
나에게 가장 좋은 옵션은 작동하고 단순합니다.
git pull --rebase
그리고나서
git push
행운을 빌어요.
사용할 수 있습니다.
git pull --rebase <your_repository_name> <your_branch>
이렇게 하면 로컬 리포지토리에 변경사항이 아직 등록되지 않은 경우에 특히 유용합니다.README.md.
새 GitHub repo를 초기화한 경우ReadMe파일 및 다음과 같은 치명적인 오류를 수신합니다.
fatal: 관련 없는 기록 병합 거부
그런 다음 아래 명령을 사용해 보십시오.
git pull origin master --allow-unrelated-histories
이제 프로젝트를 새 리포지토리로 푸시할 수 있습니다.
git push origin [branch]
참고: Github에서 저장소를 초기화하고 로컬로 커밋한 경우 위에서 제안된 명령인 "git pull origin..."을 사용해야 합니다.그렇지 않으면 다음 명령을 입력하면 됩니다.
git pull origin [branch]
도움이 되었기를 바랍니다.
이 오류가 발생했습니다. 서버에 업데이트가 있었지만 소스 트리에 사용 가능한 업데이트가 표시되지 않았습니다(마지막으로 확인했을 때 오프라인 상태였기 때문일 수 있음).그래서 소스 트리에서 새로 고침을 했는데 이제는 1개의 항목이 아닌 2개의 항목이 표시됩니다.
따라서 이 오류가 발생하면 새로 고침 또는 풀을 누른 다음 다시 시도하십시오.
저도 같은 문제가 있었습니다.제가 만들어낸 일입니다.먼저 풀링하지 않고 리포지토리의 파일을 읽습니다.
삭제할 수 있습니다.누르기 전에 파일을 읽거나 끌어다 놓으십시오.
1.깃 당기기 기원
2.수신 또는 기존 변경사항 유지와 같은 요구사항에 따라 변경사항을 수락합니다.
3.git add 기타 git add.4.git commit -m "커밋 메시지 유지"
5.git 푸시 오리진
이것은 저에게 효과가 있었습니다.그게 당신에게 효과가 없다면 제게 알려주세요.
동료가 변경한 내용을 쉽고 안전하게 되돌릴 수 있습니다.git revert 명령을 사용합니다.
git revert commit-hash
해시는 다음 명령을 사용하여 찾을 수 있습니다.
git log
커밋을 되돌리는 것은 이상적이지 않습니다. 실제로 그렇게 하는 것은 매우 드문 경우입니다. 개발자가 유사한 파일을 동시에 작업하고 서로 다른 변경 작업을 수행하는 경우가 종종 발생합니다. Git는 정상적인 코드 기반을 유지하는 데 필요한 노력을 줄이기 위해 구축됩니다.
Git 외에도 Github, Atlassian, GitLab 등과 같은 서비스는 편리한 인터페이스와 기능을 제공하여 훨씬 더 많은 문제를 줄일 수 있습니다.예를 들어 공유 분기에 직접 푸시되지 않도록 하고 하위 분기를 사용하여 풀 요청으로 대체합니다.
만약 당신이 팀이라면 조직력이 부족합니다.내가 당신에게 제안하는 것은 다른 사람들보다 먼저 변화를 깨기 위해 더 빨리 일하는 것입니다. (jk)
제 독백은 충분합니다만, 이 문제가 발생할 때 제가 사용하기 좋아하는 몇 가지 방법이 있습니다.
먼저, 그리고 분명한 것은, 변경 사항을 적용하기 전에 충돌을 해결하는 것입니다.요즘 IDE는 충돌에 대한 인터페이스가 정말 좋습니다. 이것은 vs-code의 예입니다.
유지, 수정 또는 제거할 코드 조각을 선택할 수 있는 "Accept current, incoming, both"(현재, 수신, 둘 다 수락) 버튼이 몇 개 있습니다.IDE의 동의 없이!를 원할 경우 코드를 수동으로 편집할 수도 있습니다.
이는 작업이 진행 중이고 팀원들이 변경해야 할 때 유용합니다.아니면 일을 마치고 세 번째 야근 후 잠자리에 들기 전에 PR을 받고 싶을 때도 있습니다.
cmd를 통해 동일한 작업을 수행할 수 있지만 프로세스가 끝날 때쯤 대머리가 될 수 있습니다.
큰 기능을 사용하는 경우 많은 변경 사항을 수행했지만 파일을 커밋하지 않은 상태로 유지하는 것이 편리할 때가 있습니다. 스테이징은 친구입니다.
git stash > Will temporary store your changes locally until you do a
git stash pop > which will retrieve and apply the changes for you.
캐시 작업 사이에 분기를 당기면 분기가 공유된 분기에 가깝다고 가정할 때 충돌이 트리거되지 않습니다.그렇지 않으면, 당신은 1단계로 돌아옵니다.
세 번째이자 마지막 비밀은 diff 파일입니다.
git checkout -b branch_a
git diff dev..branch_a > changes.diff
git apply changes.diff
기본적으로 두 분기 간의 차이를 비교하여 changes라는 파일을 만듭니다.diff는 동료에 의해 만들어진 모든 변경 사항을 보여주고 유지하거나 제거할 항목을 결정하는 데 도움을 줄 것입니다.
Btw! 병합을 수행할 수 있습니다. -- 취소를 위한 중단.
이 오류는 커밋하는 코드와 GitHub에 있는 코드의 구조가 다르기 때문에 발생할 수 있습니다.다음을 참조할 수 있습니다.관련 없는 기록 병합 거부 오류 처리 방법:
git pull --allow-unrelated-histories
git push -f origin master
저도 같은 문제가 있었습니다.당신이 올바른 헤로쿠 계정에 있는지 확인하세요.
제가 잘못된 헤로쿠 계정으로 변경 사항을 푸시하려고 했을 때 나타났습니다.
언급URL : https://stackoverflow.com/questions/24357108/error-updates-were-rejected-because-the-remote-contains-work-that-you-do-not-ha
'programing' 카테고리의 다른 글
| 이해하는 시간.perf_counter() 및 time.process_time() (0) | 2023.05.09 |
|---|---|
| SQL Server 데이터베이스에서 ID 증가가 점프하고 있습니다. (0) | 2023.05.09 |
| R의 Openxlsx 패키지를 사용하여 Excel Workbook의 기존 시트를 수정하려면 어떻게 해야 합니까? (0) | 2023.05.09 |
| DataGrid 텍스트 열에 스타일을 지정할 수 없는 이유는 무엇입니까? (0) | 2023.05.09 |
| Git: 두 분기의 가장 최근 공통 조상 찾기 (0) | 2023.05.09 |
