Egit이 비 빨리 감기를 거부했습니다.


89

github 저장소로 푸시하는 동안이 메시지가 표시됩니다. 문제를 해결하기위한 단계별 절차를 알려 주시겠습니까? 한 번만 밀었 고 성공했습니다. 그러나 프로젝트를 업데이트하고 두 번째 커밋을 푸시하려고하면 "마스터가 빨리 감기를 거부했습니다"라는 메시지가 표시되고 푸시를 허용하지 않습니다. 절차를 설명하십시오.


"README로이 저장소 초기화"로 새 저장소를 만든 후에도 동일한 문제가 발생했습니다. 나는 그것을 제거 하고이 chechbox없이 다시 만듭니다.
Andrew

앤드류는 권리입니다
대니 Wehbe

답변:


226

나는 똑같은 문제가 있었고 그것을 고칠 수있었습니다. afk5min이 옳았습니다. 문제는 코드를 가져온 지점이 원격 저장소에서 변경되었다는 것입니다. 표준 자식 관행 ( http://git-scm.com/book/en/Git-Basics-Working-with-Remotes )에 따라 (이제) 원격 저장소의 변경 사항을 로컬 변경 사항에 병합해야합니다. 커밋 할 수 있습니다. 이것은 다른 사람의 변경 사항을 가져 와서 코드에 병합하여 코드가 다른 변경 사항과 함께 계속 작동하도록합니다.

어쨌든 단계로 넘어갑니다.

  1. 원래 가져온 브랜치를 가져 오도록 '가져 오기'를 구성하십시오.

  2. 원격 지점을 가져옵니다.

  3. 해당 원격 분기를 로컬 분기에 병합하십시오.

  4. 로컬 리포지토리에서 (병합) 변경 사항을 커밋합니다.

  5. 변경 사항을 원격 저장소로 푸시하십시오.

상세히...

  1. Eclipse에서 'Git Repositories'보기를 엽니 다.

  2. 로컬 저장소가 표시되고 원격 저장소를 하위 폴더로 볼 수 있는지 확인합니다. 제 버전에서는 Remote라고 불리며 그 안에서 원격 프로젝트를 볼 수 있습니다.

  3. 왼쪽을 가리키는 녹색 화살표를 찾으십시오. 이것은 '가져 오기'화살표입니다. 마우스 오른쪽 버튼을 클릭하고 'Configure Fetch'를 선택합니다.

  4. URI가 표시되고 원격 저장소를 가리키는 지 확인해야합니다.

  5. 팝업의 참조 매핑 섹션을보십시오. 내 것은 비어 있었다. 가져 오려는 원격 참조를 나타냅니다. '추가'를 클릭하십시오.

  6. 원격 저장소에서 가져 오는 데 필요한 분기 이름을 입력하십시오. Mine은 'master'였습니다 (btw, 여기 드롭 다운이 좋을 것입니다 !!, 지금은 입력해야합니다). 팝업을 계속 진행하고 결국 '마침'을 클릭합니다.

  7. '저장 및 가져 오기'를 클릭합니다. 원격 참조를 가져옵니다.

  8. 로컬 저장소의 'Branches'폴더를 확인하십시오. 이제 원격 폴더에서 해당 원격 분기를 볼 수 있습니다. 다시 '마스터'가 보입니다.

  9. '마스터'라는 이름의 'Branches'의 'Local'폴더에서 로컬 분기를 마우스 오른쪽 버튼으로 클릭합니다. 'Merge'를 선택한 다음 'origin / master'라는 이름의 원격 지점을 선택합니다.

  10. 병합을 통해 처리합니다.

  11. 로컬 저장소에 대한 변경 사항을 커밋합니다.

  12. 변경 사항을 원격 저장소로 푸시하십시오.

  13. 가서 맛있는 음료를 마시고 자신을 축하하십시오. 나머지는 쉬십시오.


7
이것은 답으로 표시되어야합니다. 매력처럼 작동했습니다. 이 문제는 Eclipse에서 내 프로젝트에 대해 GitHub에 저장소를 생성 할 때 파일 (일반적인 README 파일)을 추가하지 않은 경우에도 발생합니다. 따라하기 쉬운 단계별 설명에 감사드립니다.
rbaleksandar

이 문제를 해결하는 데 1 년이 걸렸습니다. 제 경우에는 원격이 없었지만 Eclipse는 'origin'이라는 기본 것을 만들었습니다.
Eugene van der Merwe

마지막으로 Eclipse와 병합 할 수 있습니다. 여기서 핵심은 일반적인 Team Synchronize보기가 아닌 Git Repositories보기를 사용하여 병합을 수행하는 것입니다. 팀에서 동기화보기 eGit이 아무것도하지 않는 모든 옵션을 비활성화 할 수 있다면 좋을 것입니다.
댄 카터

1
이것이 작동하는 동안 불필요한 병합 커밋을 만듭니다. 여기에서 rebase를 사용해야합니다. 변경 사항이 로컬에만 적용되므로 게시 된 기록을 변경하지 않기 때문에 괜찮습니다 (그렇게하면 git은 어쨌든 빨리 감기가 아닌 푸시를 요청합니다). 나는 MYN의 대답을 좋아합니다.
nyuszika7h

1
프로젝트를 마우스 오른쪽 누른 다음 Merge마스터에서 다음 바로 프로젝트를 다시 클릭은 push branch Master
user1207289

17

제 경우에는 Force Update밀면서 확인란을 선택했습니다 . 그것은 매력처럼 작동했습니다.


이것은 나에게도 효과적이었습니다. 커밋을 "수정"한 후 OP의 조건이있었습니다. 그리고 가져 오기는 나에게 "가져올 아무것도"주지 않았다
Twilite

11

그 동안 (프로젝트를 업데이트하는 동안) '마스터'브랜치에 다른 커밋이 수행되었습니다. 따라서 변경 사항을 푸시하려면 먼저 해당 변경 사항을 가져와야합니다.


4
이 경우 git은 매우 어리 석습니다. 모든 변경 사항을 리모컨에 푸시했습니다. 그리고 나는 프로젝트에서 유일한 작품입니다. 다시 밀기 전에 리모컨을 당겨야하는 이유는 무엇입니까 ???? 당겨진 변화는 원래 내 로컬에서 올 것
Junchen 리우에게

7

Eclipse Luna + Eclipse Git 3.6.1에 적용 가능

나는,

  1. 복제 된 git 저장소
  2. 소스 코드를 일부 변경했습니다.
  3. Git 스테이징 뷰에서 단계적 변경
  4. 마지막으로 커밋하고 푸시하세요!

그리고 EGit에서이 문제에 직면했고 여기에 내가 해결 한 방법이 있습니다 ..

예, 변경 사항을 커밋하기 전에 누군가 변경 사항을 커밋했습니다. 따라서 변경 사항이 거부됩니다. 이 오류 후 변경 사항은 실제로 로컬 저장소에 커밋됩니다. 내가 지적한대로 Pull유지 linear history하고 싶었 기 때문에 변경 만하고 싶지 않았습니다. 어떤 경우에`git pull`이 해로울 수 있습니까?

그래서 다음 단계를 실행했습니다.

  1. Git Repository 관점에서 해당 Git
    프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 고르다 Fetch from Upstream - 그것은 원격 업데이트 (심판 및 객체)를 가져옵니다하지만 업데이트가 로컬로 수행되지 않습니다. 자세한 내용 은 'git pull'과 'git fetch'의 차이점무엇입니까?를 참조하십시오 .
  3. 선택 Rebase...-이것은 팝업을 열고 클릭Preserve merges during rebase 참조 이유를
    정확히 자식의 무엇 "REBASE --preserve-병합"할 (? 그리고 왜)
  4. 클릭 Rebase button
  5. / 있다면 conflict(s) 6 단계로 이동하고 11 단계로 이동합니다.
  6. Rebase Result팝업이 나타납니다, 단지 클릭 것OK
  7. file comparator 열리면 수정해야합니다. left side file .
  8. 변경 사항 병합이 올바르게 완료되면 Git Staging 보기로 이동하십시오.
  9. stage the changes. 즉add to index
  10. 동일한보기에서 Rebase ->를Continue . 모든 충돌이 해결 될 때까지 7-10을 반복하십시오.
  11. ...에서 History 보기, 당신의 선택 행을 커밋 선택Push Commit
  12. 선택 Rebase Commits of local.......확인란을 선택하고 다음을 클릭합니다. 이유를 참조하십시오- -Git : 업스트림에서 개발 브랜치로 리베이스
  13. 클릭 Finish

참고 : 로컬 저장소 커밋이 여러 개있는 경우 여러 병합을 방지하려면 하나의 커밋으로 스쿼시해야합니다.


병합 대신 rebase 사용에 동의합니다. 불필요한 병합 커밋을 생성하지 않기 때문에 더 좋습니다. (주제 꺼짐 : 스택 오버플로가 완전히 말도 안되는되고하는 것은 전적으로 내가 원래 "+1"을 쓴 사실에 기초 내 댓글을 거부 내 의견을 완벽하게 건설, 감사합니다..)
nyuszika7h

4

구성 거부 메시지를 받으면 코드를 푸시 한 후 구성을 클릭하고이 그림과 같이 사양 추가를 클릭합니다.

소스 참조 및 대상 참조 드롭 다운하고 ref / heads / yourbranchname을 클릭하고 Add Spec을 다시 클릭하십시오.

여기에 이미지 설명 입력 강제 업데이트를 선택했는지 확인하십시오.

여기에 이미지 설명 입력 마지막으로 코드를 저장하고 저장소에 푸시


3

자식보기 열기 :

1- 프로젝트를 선택하고 병합을 선택하십시오. 2- 원격 추적을 선택하십시오. 3- 확인을 클릭하십시오.

Git은 원격 지점을 로컬 저장소와 병합합니다.

4- 그런 다음


2

이 오류는 원격 저장소에 다른 커밋이 있고 로컬 브랜치보다 앞 섰음을 의미합니다.
나는 git pull에 이어 git push를 시도합니다. 충돌하는 변경 사항이없는 경우 git pull은 변경 사항을 그대로 유지하면서 내 로컬 브랜치에 최신 코드를 가져옵니다.
그런 다음 git push가 변경 사항을 마스터 브랜치에 푸시합니다.


보이는 많은 사람들이 간단한 해상도를 누락 : D
블랙

0

나는 당신이 git의 최신 커밋에 있어야 함을 발견했습니다. 따라서 다음 단계를 따르십시오. 1) 동일한 파일에서 작업하지 않았는지 확인하십시오. 그렇지 않으면 DITY_WORK_TREE 오류가 발생합니다. 2) 최신 변경 사항을 가져옵니다. 3) 업데이트를 커밋하십시오.

도움이 되었기를 바랍니다.


-1
  1. Github로 이동하여 새 코드에 대한 저장소를 만듭니다.
  2. 업스트림으로 푸시 할 때 Eclise에서 새 https 또는 ssh URL을 사용하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.