힘내 푸시가 "비 빨리 감기"를 거부했습니다.


90

나는 git아직 꽤 새롭지 만 현재 팀 환경에서 코드를 관리하는 데 사용하고 있습니다. 리베이스 문제가 있었고 다음을 사용하여 수정했습니다.

git checkout --ours filename.txt
git add filename.txt
git rebase --continue

이제 변경 사항을 푸시하고 다음 명령을 실행합니다.

$ git push origin feature/my_feature_branch

다음과 같은 오류가 발생합니다.

To ssh://git@coderepo.com:7999/repo/myproject.git
 ! [rejected]        feature/my_feature_branch -> feature/my_feature_branch (non-fast-forward)
error: failed to push some refs to 'ssh://git@coderepo.com:7999/repo/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

오류를 제거하려면 어떻게해야합니까?

추신 : --force가능한 한 옵션 사용을 피하고 있습니다.


답변:


76

누군가 당신의 마지막 git fetchgit push. 이 경우 단계를 반복하고 my_feature_branch한 번 더 리베이스해야합니다 .

git fetch
git rebase feature/my_feature_branch
git push origin feature/my_feature_branch

후에 git fetch나는 gitk --all.


병합으로 기본 설정되어야하는 git pull origin master : master를 활성화하려면 어떻게해야합니까? 병합 충돌입니까? 이것은 유일한 질문입니다.
mathtick

24

아마도 리베이스 이전에 원격 변경 사항을 가져 오지 않았거나 누군가가 새로운 변경 사항을 푸시하지 않았을 것입니다 (리베이스 및 푸시를 시도하는 동안). 다음 단계를 시도하십시오.

#fetching remote 'feature/my_feature_branch' branch to the 'tmp' local branch 
git fetch origin feature/my_feature_branch:tmp

#rebasing on local 'tmp' branch
git rebase tmp

#pushing local changes to the remote
git push origin HEAD:feature/my_feature_branch

#removing temporary created 'tmp' branch
git branch -D tmp

이것은 내 문제를 해결합니다. 코드를 커밋 할 때 리베이스를 수행했습니다 (너무 늦게 변경 했으므로 커밋 전에 수행해야 함). 그러면 갈등이 없어도 밀 수 없었습니다. 위의 마법을 적용한 후 작동했습니다. 감사.
Jing Li

18

나는이 문제가 있었다! 나는 시도했다 : git fetch + git merge, but not resolved! 나는 시도했다 : git pull, 또한 해결되지 않음

그런 다음 이것을 시도하고 내 문제를 해결했습니다 (엔지니어의 답변과 유사합니다).

git fetch origin master:tmp
git rebase tmp
git push origin HEAD:master
git branch -D tmp

7
이것은 나를 망 쳤고, 나는 물건을 마스터에게 직접 밀고 하루 종일 배치를 밀었습니다 ... 그리고 모두가 열 받았습니다 .... 굉장한 팁!
Mike Q

6
누군가에게 위험한 도구를주기 전에 당신이하는 일을 요약해서 설명하고 싶을 것입니다.
Mirv-Matt

10

비슷한 문제가 있었고 다음과 같이 해결했습니다. git pull origin


1
원격 지점을 가져 오는 동안 문제의 오류를 받았을 때 도움이되었습니다.
GChuf

7

나는 파티에 늦었지만 github 도움말 페이지 에서 유용한 지침을 찾았고 여기에서 공유하고 싶었습니다.

때로는 Git이 커밋을 잃지 않고 원격 저장소를 변경할 수 없습니다. 이 경우 푸시가 거부됩니다.

다른 사람이 당신과 같은 브랜치로 푸시했다면 Git은 당신의 변경 사항을 푸시 할 수 없습니다 :

$ git push origin master
To https://github.com/USERNAME/REPOSITORY.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/USERNAME/REPOSITORY.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

원격 브랜치에서 변경 한 내용을 로컬에서 변경 한 내용과 가져 와서 병합하여이 문제를 해결할 수 있습니다.

$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin YOUR_BRANCH_NAME
# Merges updates made online with your local work

또는 간단히을 사용 git pull하여 두 명령을 동시에 수행 할 수 있습니다 .

$ git pull origin YOUR_BRANCH_NAME
# Grabs online updates and merges them with your local work

4

이 명령을 시도하십시오

$ git push -f -u origin <name of branch>

$ git push -f -u origin master


그것은 다른 사람들이하지 않은 내 경우에 효과적이었습니다. 때로는 git -f -u
gcr

1

공유 로컬 저장소에 대한 쓰기 잠금

나는이 문제가 있었고 위의 조언 중 어느 것도 나를 도왔습니다. 모든 것을 올바르게 가져올 수있었습니다. 그러나 푸시는 항상 실패했습니다. VMWare 공유 폴더 드라이버를 통해 작업하는 여러 클라이언트가있는 Windows 디렉토리에있는 로컬 저장소였습니다. 시스템 중 하나가 쓰기를 위해 Git 저장소를 잠근 것처럼 보입니다. 관련 VMWare 시스템을 중지 한 후 모든 잠금이 즉시 복구되었습니다. 어떤 시스템에서 오류가 발생하는지 파악하는 것이 거의 불가능했기 때문에 성공할 때까지 하나씩 중지해야했습니다.


1

글쎄, 나는 여기에 조언을 사용했고 그것은 내 지역 코드를 마스터에 직접 병합했기 때문에 나를 망쳤다. .... 그러니 모든 것을 소금 한 알로 가져 가십시오. 내 동료는 다음이 내 지점을 다시 지정하는 데 필요한 문제를 해결하는 데 도움이되었다고 말했습니다.

 git branch --set-upstream-to=origin/feature/my-current-branch feature/my-current-branch

0

Eclipse에서 다음을 수행하십시오.

GIT Repositories> Remotes> Origin> 마우스 오른쪽 버튼을 클릭하고 fetch라고 말합니다.

GIT 저장소> 원격 추적> 브랜치를 선택하고 병합이라고 말합니다.

프로젝트로 이동하여 파일을 마우스 오른쪽 버튼으로 클릭하고 업스트림에서 가져 오기라고 말합니다.


0
  1. 코드를 새 분기로 이동-git branch -b tmp_branchyouwantmergedin
  2. 병합하려는 브랜치로 변경하십시오-git checkout mycoolbranch
  3. 병합하려는 분기 재설정-git branch reset --hard HEAD
  4. tmp 분기를 원하는 분기로 병합-git 분기 merge tmp_branchyouwantmergedin
  5. 원점으로 밀다

0

이 문제를 해결하기위한 또 다른 해결책은 다음과 같습니다.

>git pull
>git commit -m "any meaning full message"
>git push

-1
  1. 로컬 커밋을 실행 취소합니다. 이것은 커밋을 취소하고 작업 복사본의 변경 사항을 유지합니다.
git reset --soft HEAD~1
  1. 최신 변경 사항 가져 오기
git pull
  1. 이제 최신 코드 위에 변경 사항을 커밋 할 수 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.