programing

깃 푸시가 "빠른 방향으로 이동하지 않음"을 거부했습니다.

subpage 2023. 9. 21. 20:22
반응형

깃 푸시가 "빠른 방향으로 이동하지 않음"을 거부했습니다.

는 입니다가 입니다.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가능한 한 옵션을 선택합니다.

범행 사이에 을 밀어 것 git fetch그리고.git push한 후 . .my_feature_branch한번 더.

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

git fetch저는다로 을 추천합니다.gitk --all.

경고: 이 솔루션을 사용하면 작업이 중단될 수 있습니다.특히 팀 환경에서는 다른 사용자의 기여를 덮어쓰거나 삭제할 수 있습니다.더 나은 방법을 위해 이 다른 대답을 보세요: https://stackoverflow.com/a/20467414/39648

이 명령어를 사용해 보십시오.

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

들면$ git push -f -u origin master

기본 재배치 전에 원격 변경사항을 가져오지 않았거나(기본 재배치 및 푸시를 시도하는 동안) 다른 사용자가 새 변경사항을 푸시하지 않았을 수 있습니다.다음 단계를 수행합니다.

#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

문제가 있었어요!git fetch + git merge를 시도했지만 해결되지 않았습니다!git pull을 시도했지만 해결되지 않았습니다.

그런 다음 이를 시도하여 문제를 해결했습니다(Engineer의 답변과 유사).

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

파티에 늦었지만 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

git pull origin

non fast forward 오류가 발생한 후 아래 작업만 수행하십시오.

1> git pull --rebase origin <name-of-the-remote-branch>

원격 변경 사항을 로컬 지점으로 가져오므로 로컬 커밋이 적용됩니다.

2> git push origin <name-of-the-remote-branch>

원격 지점의 로컬 복사본에서 로컬 변경 사항을 실제 원격 지점 리포팅에 적용합니다.

정확히 같은 오류를 범한 저의 경우, 저만 개발자가 아니었습니다.

는 제 했습니다. 아래에 나와 있는 것을 볼 수 있습니다.Commit대화 상자 팝업:

Checked option for: Push changes immediately to origin

큰 를 했어요하지만 제가 실수를 저질렀습니다.Fetch내가 최근에 가지고 있는지 확인하기 위한 버튼.

커밋은 성공적으로 실행되었지만 푸시는 성공하지 못했지만 대신에 언급된 오류를 제공합니다. ...다른 개발자가 저와 같은 파일을 변경하지는 않았지만, 같은 오류가 표시되어 최신 파일을 풀 수 없습니다.

GUI 솔루션

대부분 소스트리의 GUI(Graphical User Interface)를 고수하는 것을 선호합니다.이 솔루션은 이상적이지 않을 수도 있지만, 변경 사항을 분실하거나 다른 개발자의 최신 업데이트를 손상시킬 염려 없이 다시 진행하게 되었습니다.

STEP 1

내용을 취소하려면 오른쪽 버튼으로 하고 합니다를 합니다.Reset current branch to this commit다음과 같습니다.

Sourcetree window with right-clicked commit and selecting: Reset current branch to this commit

STEP 2

로드가 되면 창 Pull단추...

Sourcetree window with with the Pull button highlighted

...그러면 대화 팝업이 나타나고 오른쪽 하단에 있는 버튼을 클릭합니다.

Sourcetree window dialog popup with the OK button highlighted

STEP 3

마지막으로 당긴 후 오류가 발생하지 않으면 4단계(아래 다음 단계)로 건너뜁니다.그렇지 않으면 이 시점에서 병합 충돌이 발견되면, 내가 내 컴퓨터에 했던 것처럼Web.config일:

Sourcetree window showing the error hint: Updates were rejected because the tip of your current branch is behind

...을합니다.그러면 클릭합니다.Stash상단에 대화 팝업이 나타나고 Descriptive-name of your changes(변경 내용 설명)을 작성한 다음 버튼을 클릭해야 합니다.

Sourcetree window with Stash button highlighted and dialog popup showing input to name your stash with OK button highlighted

...Sourcetree에서 변경된 파일을 저장한 후 2단계(위의 이전 단계)에서 작업을 반복하면 로컬 파일이 최신으로 변경됩니다.이제 변경사항을 다시 적용할 수 있습니다.STASHES소스 열 오른쪽 단추를 하여 소스 트리를 선택합니다. 화살표를 사용하여 스태시를 펼친 다음 마우스 오른쪽 버튼을 클릭하여 선택합니다.Apply Stash 'Descriptive-name-of-your-changes', 대화 팝업에서 선택 버튼을 누르면 다음과 같이 나타납니다.

Sourcetree window with the Stashes section expanded and changes right-clicked with Apply Stash highlighted

Sourcetree dialog popup ask your to confirm if you would like to apply stash you your local copy

텍스트 을 받는 에서 Visual Studio Code를 합니다.Accept Incoming Change링크한 다음 저장:

enter image description here

로 돌아가서 Source tree를 Commit상단의 버튼:

enter image description here

파일을 마우스 버튼으로 Resolve Conflicts하다,택을 합니다.Mark Resolved옵션:

enter image description here

STEP 4

드디어!우리는 이제 우리의 파일을 커밋할 수 있고, 또한 체크 표시할 수 있습니다.Push changes immediately to originCommit단추:

enter image description here

추신: 이 글을 쓰는 동안, 커밋 직전에 다른 개발자가 커밋을 제출했기 때문에 거의 반복적인 단계를 거쳐야 했습니다.

공유 로컬 리포지토리에 잠금 쓰기

이런 문제가 있었는데 위의 어떤 조언도 도움이 되지 않았습니다.저는 모든 것을 올바르게 가져올 수 있었습니다.하지만 푸시는 항상 실패했습니다.이 저장소는 VMware 공유 폴더 드라이버를 통해 여러 클라이언트가 작업하는 윈도우즈 디렉토리에 위치한 로컬 저장소였습니다.시스템 중 하나가 글을 쓰기 위해 Git 저장소를 잠근 것으로 보입니다.관련 VMWare 시스템을 중지한 후 모든 것이 즉시 복구되었습니다.어떤 시스템이 오류를 유발하는지 파악하기가 거의 불가능했기 때문에 성공할 때까지 일일이 막아야 했습니다.

제가 여기서 조언을 사용했는데 제 지역 코드를 마스터에 직접 병합하는 바람에 망쳤어요. 그러니 좀 과장되게 생각하세요.제 동료는 다음이 문제를 해결하는 데 도움이 되었으며, 제 지점을 재배치할 필요가 있다고 말했습니다.

 git branch --set-upstream-to=origin/feature/my-current-branch feature/my-current-branch
  1. 코드를 새 분기로 이동 - git branch - btmp_ branch 병합할
  2. 병합할 지점으로 변경 - git 체크아웃 my cool branch
  3. 병합할 분기를 -git 분기 재설정 --hard HEAD로 재설정합니다.
  4. tmp 브랜치를 원하는 브랜치에 병합 - git 브랜치 병합 tmp_branch 병합합니다.
  5. 출발지로 밀어내다

이 문제는 https://github.com/ 을 사용하여 GitHub 저장소에 일부 변경 사항을 커밋한 경우에 발생합니다. 로컬 저장소에 풀링되지 않습니다.

이 문제를 해결하기 위해서는-

  1. 먼저 GitHub에서 저장소를 꺼내고 로컬 저장소의 커밋 또는 변경 사항을 업데이트합니다.
  2. 그런 다음 GitHub 저장소에 커밋을 푸시합니다.
  3. 아래 단계를 따를 수 있습니다.
git pull <git repo HTTPS LINK>
git commit -m "updates and bugs fixed"
git push
git checkout master

git fetch [the temporal branch of the company before pushing to master]

git pull --rebase [the temporal branch of the company before pushing to master] master

git checkout -b [new-branch]

그런 다음 파일을 추가하고 다음 작업을 수행합니다.

git add .

git commit -m "added article"

git push -u origin [new-branch]

저는 이게 통했어요.

Eclipse에서 다음을 수행합니다.

GIT Reposities > Remotees > Origin > 우클릭 후 fetch라고 말합니다.

GIT Repositaries > Remote Tracking > 지점 선택 후 병합하기

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

때때로 Git은 커밋을 잃지 않고는 원격 저장소를 변경할 수 없습니다.이런 일이 일어나면 당신의 압력이 거부됩니다.다른 사람이 당신과 같은 지점에 푸시했다면 Git은 당신의 변경사항을 푸시할 수 없습니다.

다음을 통해 이 문제를 해결할 수 있습니다.

git pull origin YOUR_BRANCH_NAME

이것만이 나에게 효과가 있었습니다.

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

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

더 많은 통찰력을 얻으려면 다음을 수행하십시오.

나 이거 받고 있었어요.

* branch            main       -> FETCH_HEAD
fatal: refusing to merge unrelated histories

저한테 효과가 있었던 건.

git remote add origin repositry-web-url
git branch -M main
git pull origin main --allow-unrelated-histories

git push -u origin main
  • git pull --rebase명령은 원격 변경 내용을 로컬 분기에 통합할 때 병합 대신 기본 재배치를 수행합니다.이렇게 하면 변경사항을 적용하기 전에 해결해야 하는 충돌이 있는 상황에서 도움이 될 수 있습니다.
$ git pull --rebase origin main
  • git push로컬 분기를 원격 저장소로 푸시하는 명령입니다.
$ git push -u origin main

이 문제를 해결하기 위한 다른 해결책이 있습니다.

>git pull
>git commit -m "any meaning full message"
>git push
  1. 로컬 커밋을 실행 취소합니다.이렇게 하면 커밋이 실행 취소되고 작업 복사본의 변경 사항이 보존됩니다.
git reset --soft HEAD~1
  1. 최신 변경사항 끌어오기
git pull
  1. 이제 최신 코드 위에 변경 사항을 적용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/20467179/git-push-rejected-non-fast-forward

반응형