오류 "치명적:빠르게 전달할 수 없음, 중단"
Git는 왜 더 이상 빠른 순방향 병합을 허용하지 않습니까?
만약 내가 그것을 사용해서 강요하려고 한다면.--ff-only
를 받았습니다.
fatal: 빠르게 전달할 수 없습니다. 중단합니다.
나는 그것에 엄청난 이점이 있다는 것을 압니다.merge --no-ff
ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ--ff-only
지금요?
고지 사항: 이 명령은 원격 분기에서 변경 사항을 가져옵니다.
git pull --rebase
다른 솔루션과 달리 대상 분기의 이름을 알 필요가 없습니다.
업스트림 분기가 설정되지 않은 경우 시도git pull origin <branch> --rebase
에서 @대한 (글속분 @Rick덕)
이 옵션을 전체적으로 설정하려면 다음을 사용합니다.git config --global pull.rebase true
대한 ) ( @Artur Mustafin에 대한 크레딧)
합니다.--no-ff
한 번 당기기에 대해 빠른 전달을 해제하려면:
git pull --no-ff
https://git-scm.com/docs/git-pull#Documentation/git-pull.txt---no-ff
분기가 더 이상 병합하려는 분기에 직접 기반을 두지 않습니다. 예를 들어 분기에 없는 다른 커밋이 대상 분기에 추가되었습니다.따라서 빠르게 전달할 수 없습니다. 빠르게 전달하려면 분기에 대상 분기가 완전히 포함되어야 하기 때문입니다.
은 당신의분기를 분기 할 수 .git rebase <destination branch>
커밋을 재작업하여 커밋으로 빠르게 전달하거나 정기적으로 병합할 수 있습니다.
한다면
git pull
에서는 이 작업을 수행하지 않으며 현재 변경 사항과 분기를 원래 위치에서 풀링할 때 발생하는 변경 사항을 모두 병합하려면 다음 작업을 수행합니다.
git merge origin/BRANCH_NAME
그런 다음 충돌이 있는 경우 병합을 해결하고 당일에 수행합니다.
이는 빠른 전달 전용 옵션을 사용하도록 설정했기 때문입니다.여기서 중요한 것은 분기에서 끌어오면 로컬 깃에 병합 커밋이 생성되고, 빨리 감기 전용 옵션은 끌어 당길 때 병합 커밋을 만들 수 없다는 것입니다.
큰 팀의 경우, 여러분은 많은 시간과 풀에서 나오는 모든 약속에 따라 갈등을 재조정하고 해결하게 될 것입니다.
git 로컬 구성 파일에서 ff = only line을 제거하는 것이 좋습니다.
cd to-my-project-root-messages
nano .git/config
[pull]
ff = only // remove this line
rebase = false
이거 먹어봐요.잘 될 거예요.
git pull origin --rebase
빠른 전달이 아닌 오류가 발생한 후에는 다음을 수행합니다.
git pull --rebase origin <name-of-the-remote-branch>
원격 변경 사항을 로컬 분기로 가져옵니다.또한 로컬 커밋이 적용됩니다.
그리고나서
git push origin <name-of-the-remote-branch>
원격 지점의 로컬 복사본에서 로컬 변경 내용이 실제 원격 지점 보고에 적용됩니다.
만약 당신이 이것을 할 때 받는다면.git pull origin master
지역에서 로컬지서열기를 ..gitconfig
으로 C모장일(C:에숨김))에 숨김: 줄을 합니다.Users\Myname)을 클릭하고 다음 두 줄을 추가합니다.
[pull]
ff = no
한 후 "" " " " 를 해 보십시오.git pull origin master
다시
저한테는 효과가 있었어요.branch_name을 분기의 실제 이름으로 변경합니다.
git pull origin branch_name --no-ff
이것은 나에게 효과가 있습니다.
git pull --no-ff
만약 네가 이걸 마주한다면,
하십시오.
특히 업데이트된 업스트림을 주제 분기에 병합하는 경우.
#
되고, 빈는 '#'을 합니다.
위원회
그런 다음 다음 단계를 수행합니다.
- 누르를
i
- 을 찍다
Esc
- 누르를
:wq
터미널에서 이를 시도할 수 있으며, 실제로 <.gitconfig> 파일을 편집하고 setf = no.
git config pull.ff no
저한테는 효과가 있어요.사용할 수 있는 항목:
git pull --no-ff
사용:
git pull origin main --rebase
git pull --rebase
위의 두 가지 명령은 저에게 효과가 있었습니다.하지만 유일한 문제는 현재 지점의 주요 지점에서도 커밋이 보인다는 것입니다.
이 메시지는 언제 볼 수 있습니까?
을 할 때git merge --ff-only <some/branch>
또는git pull --ff-only <remote> <some/branch>
또한 병합하려는 분기 또는 커밋은 현재 분기를 기반으로 하지 않습니다. 이 분기의 기록은 사용자의 기록에서 갈라졌습니다.
git pull
구성에 할 수 , 할 수 .git pull origin <some/branch>
은 그고당 구은성입니다.pull.ff = only
하려면: 를합니다.git config pull.ff
또는git config --show-origin pull.ff
(git merge
유사한 것이 있습니다.merge.ff
옵션)
작동하지 않는 것을 어떻게 볼 수 있습니까?
분기와 대상 분기의 기록을 모두 보려면 다음을 사용할 수 있습니다.
git log --graph --oneline HEAD <some/branch>
이름을 분기이을명예입로않지경은우하력으적시름예경(우:▁if▁a)git merge --ff-only
또는git pull --ff-only
),git
은 "의 업스트림 입니다. " 기값활입업분림"입니다. 종종 다음과 같습니다.origin/mybranch
은 명행에서분참조방는법하은다같다습니음입니다.@{u}
:
git log --graph --oneline HEAD @{u}
# For Powershell users: @{...} is an operator, you will need to quote "@{u}"
git log --graph --oneline HEAD "@{u}"
현재 분기와 대상 분기 간의 차이가 표시됩니다.아래의 "추가 선택사항"도 참조하십시오.
이 문제를 해결하려면 어떻게 해야 합니까?
이것은 당신이 도달하고자 하는 결과와 당신이 위의 기록에서 보는 것에 달려 있습니다.
대상 커밋 위에 커밋의 기본을 다시 지정할 수 있습니다.
git rebase <some/branch>
# To rebase on top of your default upstream:
git rebase # The same as 'git rebase @{u}'
빠른 전달만 허용하는 대신 실제 병합을 실행할 수 있습니다.
git merge <some/branch>
git merge # The same as 'git merge @{u}'
또는 사용자의 요구에 맞는 모든 것:
- 원격 지점 위에 있는 커밋 중 일부를 체리픽으로 선택합니다.
- 사용하다
git rebase -i
, - ...의 반대 방향으로 병합.
실행할 때 이 문제를 방지하려면 어떻게 해야 합니까?git pull
?
설정한 경우--ff-only
기본값(예: if)git config pull.ff
돌아온다only
), 명령줄 플래그를 명시적으로 제공하여 이 기본값을 일회성으로 재정의할 수 있습니다.
git pull --rebase # Rebase on top of fetched branch, rather than merge it.
git pull --ff # Run a normal merge
# (note: you *will* have a merge commit in your history)
기본값을 다른 값으로 변경하려면 다음을 수행합니다.
# Remove that default value, allow normal merges when pulling
git config --global --unset pull.ff
# Run `git pull --rebase` by default
# Note: you still need to run 'git config --global --unset pull.ff'
git config --global pull.rebase true
더git log
옵션들
터미널에서 두 분기 간의 차이를 보려면 다음과 같이 하십시오.
git log --oneline --graph a b
의 전체 이력을 보여줄 것입니다.a
그리고.b
합하여의 역사를 보고 싶다면,a
그리고.b
그들이 분기한 이후로:
git log --oneline --graph --boundary a...b
# a...b (3 dots) : Means 'symmetric difference' in git log
# --boundary : Will show the commit that was at the fork point
# without this option, the two histories will be
# printed one below the other
사이드 분기를 숨기려는 경우(예: 보려는 경우)git log my/branch...master
그러나 다음에서 병합된 모든 꺼내기 요청의 세부 정보를 보고 싶지는 않습니다.master
:
git log --oneline --graph --boundary --first-parent a...b
# --first-parent : On merge commits, only follow the first parent
Git에 대한 많은 그래픽 프런트엔드(Git Extensions, TorothyGit, Gitk 등)에는 리포지토리 기록을 볼 때 이러한 옵션을 활성화하는 방법이 있습니다.GUI에서 확인란을 찾고 입력할 수 있는 필드를 찾습니다.a...b
또는HEAD...@{u}
.
이러한 명령 중 일부를 정기적으로 사용하려면 해당 명령에 대한 별칭을 설정합니다.
# Example: show HEAD vs @{upstream} log
git config --global alias.whatsup 'log --oneline --graph --boundary HEAD...@{u}'
# You can now run:
git whatsup
오리진 분기가 눌렸거나 커밋 기록을 깬 변경 사항이 있는 경우, 로컬 분기 커밋 기록에 관심이 없는 경우 로컬 분기를 재설정하면 됩니다.
git checkout branchname
git reset --hard origin/branchname
저도 같은 유형의 문제에 직면해 있었는데, 페어 프로그래밍을 할 때나 다른 사용자의 분기에 들어오는 커밋이 있을 때 많은 사람들이 이 문제에 직면할 것이라고 생각합니다.이것들은 제가 직면한 단계들이고, 저는 그것들을 해결했습니다.git pull --no-rebase
:
➜ graphql-tutorial git:(filtering) git config pull.ff only
➜ graphql-tutorial git:(filtering) git pull
fatal: Not possible to fast-forward, aborting.
➜ graphql-tutorial git:(filtering) git merge
➜ graphql-tutorial git:(filtering) git config pull.rebase false
➜ graphql-tutorial git:(filtering) git pull
fatal: Not possible to fast-forward, aborting.
➜ graphql-tutorial git:(filtering) git pull --no-rebase
Merge made by the 'ort' strategy.
. <file name>
. <file name>
. <file name>
. <file name>
5 files changed, 47 insertions(+), 9 deletions(-)
create mode 100644 app/models/auth_token.rb
이것은 나에게 효과가 있습니다.
git pull --rebase <remote> <branch>
이 오류가 발생하는 이유는 단순히 작업을 수행하는 대신git checkout
하고 있었습니다git checkout -b
분기 생성
원격 분기를 체크아웃하여 프로세스를 다시 실행해 보십시오.
나중에 이 Git 오류가 발생하면 이 솔루션이 도움이 될 것입니다.
(개발/마스터/메인)에서 로컬 지점으로 끌어오는 동안 오류가 발생했습니다.
오류 메시지:
힌트: 분기가 서로 다르므로 분기 조정 방법을 지정해야 합니다.
힌트: 이전에 다음 명령 중 하나를 실행하면 됩니다.
의 다음 당기기: 힌트당: 기기다음:다당기:
힌트:
힌트: git config pull.ff 전용 # 빨리 감기 전용
힌트:
" config config "git config", "git config --global"을 할 수 .
힌트: 모든 리포지토리에 대한 기본 설정입니다. --no-rebase, --no-rebase,
에서 " " " " " " --off-only " --off-only " 명령행에 따라 합니다.
힌트: 호출.
치명적: 서로 다른 분기를 조정하는 방법을 지정해야 합니다.
솔루션:
.git 구성 파일을 열고 다음 행을 추가합니다.
[http] ff = 아니요
1단계가 작동하지 않는 경우 2단계를 적용합니다.
git pull --ff-only orgit config --global pull.ff only
약속이 있으면 실행 취소하고 다시 당겨 보십시오!
언급URL : https://stackoverflow.com/questions/13106179/error-fatal-not-possible-to-fast-forward-aborting
'programing' 카테고리의 다른 글
URL에서 Windows 배치 파일 다운로드 (0) | 2023.05.20 |
---|---|
xcrun: 오류: 활성 개발자 경로("/Applications/Xcode.app/Contents/Developer")가 없습니다. (0) | 2023.05.20 |
git에서 명령의 별칭을 지정하려면 어떻게 해야 합니까? (0) | 2023.05.20 |
Xcode 7.2 일치하는 프로비저닝 프로파일을 찾을 수 없음 (0) | 2023.05.20 |
종료 코드 255에서 ibtool이 실패하는 이유는 무엇입니까? (0) | 2023.05.20 |