문제
나는 포기한다! 내가 밀 으려고 할 때마다 나는 바보를 얻는다 :
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'
우리 팀에는 새로운 GIT 설정이 있습니다. 개인 브랜치를 만드는 대신 이제 나는 메인 리포지토리 (Github)를 포기하여 내 자신의 사본을 만들었습니다.
어느 시점에서 내가 한 일은 다음과 같습니다.
$ git fetch upstream master:upstreammaster
그래서 여기 내 현재 설정이 있습니다 ::
$ git branch
master
* upstreammaster
$ git remote -v
origin git@github.com:userX/projectX.git
upstream git@github.com:companyX/projectX.git
여기서 userx는 내 개인 저장소입니다.
그래서 나는 상류 마스터 지점과 "업스트림 마스터"에서 끌어 당기는 것을 변경합니다. 모든 것이 합쳐지고 물건 :
$ git pull upstream master
remote: Counting objects: 95, done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 60 (delta 54), reused 0 (delta 0)
Unpacking objects: 100% (60/60), done.
From git@github.com:companyX/projectX
* branch master -> FETCH_HEAD
Merge made by recursive.
stuff | 165 ++++++++++++--------
stuff | 35 ++--
stuff | 107 ++++++++++---
stuff | 105 ++++++++++---
stuff | 24 ++--
stuff | 9 +-
stuff | 53 +++----
stuff | 44 +++---
stuff | 52 +++----
stuff | 32 +----
stuff | 4 +-
stuff | 138 ++++++++---------
stuff | 58 ++++----
stuff | 115 ++++++++------
stuff | 5 +-
stuff | 39 ++---
stuff | 28 ++--
17 files changed, 560 insertions(+), 453 deletions(-)
그러나 내가하려고 할 때 :
$ git push upstream master
To git@github.com:companyX/projectX.git
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'
어떤 도움이든 큰 감사를드립니다! 설명이 필요하면 물어보십시오. 답장하겠습니다!
해결책
푸시 할 때 업스트림 마스터에 대한 RefSpec을 지정해보십시오.
git push upstream upstreammaster:master
다른 팁
Jarret Hardie가 맞습니다. 또는 먼저 변경 사항을 다시 마스터로 병합 한 다음 푸시를 시도하십시오. 기본적으로, git push
리모컨에서 일치하는 이름이있는 모든 지점을 푸시합니다. 그래서 이것들은 당신의 두 가지 선택입니다. Jarret가 말했듯이 명시 적으로 지정하거나 공통 지점으로 다시 합병 한 다음 밀어 넣습니다.
GIT 메일리스트에 이것에 대해 이야기가 있었고이 동작이 곧 변경 될 예정이 아니라는 것이 분명합니다. 많은 개발자들이 워크 플로우 에서이 동작에 의존합니다.
편집/설명
당신의 가정 upstreammaster
지점이 밀릴 준비가되어 다음을 수행 할 수 있습니다.
업스트림에서 변경 사항을 가져옵니다.
$ git pull 업스트림 마스터
내 지역 마스터 브랜치로 전환하십시오
$ git 체크 아웃 마스터
에서 변경 사항을 병합합니다
upstreammaster
$ git는 업스트림 마스터를 병합합니다
내 변경 사항을 올리십시오
$ git 푸시 업스트림
당신이 또 다른 것 5월 밀기 전에하고 싶어요 rebase
업스트림/마스터에 대한 변경 사항이 모두 함께 커밋되도록합니다. 위의 #1과 #2 사이의 별도 단계로 그렇게 할 수 있습니다 (git rebase upstream/master
) 또는 풀의 일부로 할 수 있습니다 (git pull --rebase upstream master
)
먼저, 당신이 푸시하려고하는 것과 동일한 참조를 뽑으려고 시도하십시오.
이것이 작동하지 않으면 git push
사용하여 git push -f <repo> <refspec>
, 그러나주의 :이 방법은 원격 저장소에서 참조를 삭제할 수 있습니다.
첫 번째 사용
git pull https://github.com/username/repository master
그리고 시도하십시오
git push -u origin master
"업스트림"의 저장소가 베어 리포지토리입니까? 나는 같은 오류를 얻었지만 베어로 변경하면 더 이상 일어나지 않습니다.
푸시 요청이 표시되면 거부 된 경우 먼저 GitHub 계정에서 당기고 푸시를 시도하십시오.
전:
제 경우에는 오류가 발생했습니다.
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/ashif8984/git-github.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.
**** 그래서 내가 한 일은-****
$ git pull
$ git push
그리고 코드는 내 Github 계정으로 성공적으로 푸시되었습니다.