문제

나는 포기한다! 내가 밀 으려고 할 때마다 나는 바보를 얻는다 :

! [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 지점이 밀릴 준비가되어 다음을 수행 할 수 있습니다.

  1. 업스트림에서 변경 사항을 가져옵니다.

    $ git pull 업스트림 마스터

  2. 내 지역 마스터 브랜치로 전환하십시오

    $ git 체크 아웃 마스터

  3. 에서 변경 사항을 병합합니다 upstreammaster

    $ git는 업스트림 마스터를 병합합니다

  4. 내 변경 사항을 올리십시오

    $ 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 계정으로 성공적으로 푸시되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top