GitHub에서 원격 변경 사항을 병합하는 방법은 무엇입니까? 발생합니다. [rejected] master -> master

첫 번째 Github 푸시를 시도하면서 다음과 같은 오류가 발생합니다.

[rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:me/me.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'non-fast forward'
section of 'git push --help' for details.

이 문제를 해결하고 원격 변경 사항을 병합하려면 어떻게해야합니까?



답변

자세한 내용은 ‘ git push –help ‘ 의 ‘비 빨리 감기’섹션 을 참조하십시오.

“git pull”을 수행하고 잠재적 충돌을 해결하고 결과를 “git push”할 수 있습니다. “git pull”은 커밋 A와 B 사이에 병합 커밋 C를 생성합니다.

또는 “git pull –rebase”를 사용하여 A와 X 사이의 변경 사항을 리베이스하고 결과를 다시 푸시 할 수 있습니다. 리베이스는 A 위에 X와 B 사이의 변경을 빌드하는 새로운 커밋 D를 생성합니다.


답변

브랜치 이름 앞에 + 기호를 추가하여 강제로 푸시 할 수도 있습니다.

git push origin +some_branch


답변

github에서 병합하지 않은 변경 사항이있을 수 있습니다. git pull변경 사항을 가져오고 병합 하려고 하면 푸시 할 수 있어야합니다. 내가 당신의 질문을 잘못 이해했다면 죄송합니다.


답변

“git pull”이고 “이미 최신”이라고 표시되어 있는데도이 오류가 계속 발생하면 다른 분기 중 하나가 최신이 아니기 때문일 수 있습니다. 다시 “git push”를 시도하기 전에 다른 브랜치로 전환하고 최신 브랜치인지 확인하십시오.

“foo”분기로 전환하여 업데이트하십시오.

$ git checkout foo
$ git pull

당신은 명령을 실행하여 가지고있는 가지를 볼 수 있습니다 :

$ git branch


답변

강제로 푸시 할 수는 있지만 수행중인 작업이 확실한 경우에만 수행하십시오.

명령은 다음과 같습니다.

git push -f


답변

태그가 충돌하는 경우에도이 문제가 발생할 수 있습니다. 로컬 버전과 원격 버전이 다른 커밋에 동일한 태그 이름을 사용하는 경우 여기에서 종료 할 수 있습니다.

로컬 태그를 삭제하면 해결할 수 있습니다.

$ git tag --delete foo_tag


답변

이 오류가 발생하면 전체 프로젝트 폴더를 백업했습니다. 그런 다음 같은 것을했다

$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master

… 지점 이름에 따라 다릅니다 (마스터가 아닌 경우).

그런 다음했다 git pull --rebase. 그 후 뽑은 파일을 백업 된 프로젝트 파일로 교체했습니다. 이제 변경 사항을 다시 커밋하고 푸시 할 준비가되었습니다.