我已經閱讀了很多關于主題錯誤訊息(“不可能快進”)的其他問題,但它們似乎都不適用于我的情況。我創建了一個分支 ( git checkout -b issue-215),進行了更改,然后在本地提交。我推送更改,然后進行新更改和另一個本地提交:
* 4b797d2a - (HEAD -> issue-215)
* 180a7ab5 - (origin/issue-215)
* 863ef01a - (origin/master, origin/HEAD, master)
ETA:根據評論中的要求,輸出git branch --all -v:
* issue-215 4b797d2a [ahead 1]
... other branches ...
master 863ef01a
remotes/origin/issue-215 180a7ab5
...other remotes....
remotes/origin/HEAD -> origin/master
remotes/origin/master 863ef01a
沒有新的遠程更改,但 VSCode 想在推送之前拉取。這就是我收到此錯誤的地方。因此,為了排除故障,我git pull origin issue-215手動運行,并獲得以下輸出:
$ git pull origin issue-215
From ssh://my.repo/project
* branch issue-215 -> FETCH_HEAD
fatal: Not possible to fast-forward, aborting.
請記住,服務器上沒有新的更改,從我當前的本地提交到遠程分支的歷史記錄,回到master和origin/master,是一條直線。我不想合并或變基,我的本地代碼已經是我應該拉的分支的直接子級。
這僅在大約一個月前開始發生。以前,單擊 VSCode 中的“同步”按鈕可以作業,但從那時起它總是失敗并顯示此錯誤訊息。我可以進行某種導致這種行為的 gitconfig 更改嗎?我的全域 gitconfig 檔案中沒有太多內容,并且它發生在至少 2 個專案中,所以我認為這不是我對存盤庫所做的事情。
uj5u.com熱心網友回復:
這是 Git 版本 2.33.1 的一個已知問題。它應該在 2.33.2 中修復。 其他通常有用的建議如下:
該“無法快進”訊息意味著您配置了您的git pull使用git merge --ff-only,可能使用git config pull.ff only。所以git pull是盡職盡責地運行:
git fetch origin issue-215
git merge --ff-only FETCH_HEAD
第二個命令給你錯誤并停止。(編輯:如果您自己手動執行此操作并且它有效,您就會遇到腳注 1 中的錯誤。)
請記住,服務器上沒有新的更改,從我當前的本地提交到遠程分支、回到 master 和 origin/master 的歷史記錄是一條直線。
顯然(從錯誤中),它不是. 1 獲取后,運行:
git log --all --graph --decorate --oneline FETCH_HEAD
看看它不在哪里;為什么它不是是一個不同的問題。我懷疑答案是這樣的:
origin是 GitHub;- 其他人正在使用REBASE AND MERGE或SQUASH AND MERGE按鈕;
- 因此,您獲得的提交
fetch在邏輯上等同于您之前推送的提交,但具有不同的哈希 ID。
常規合并或變基會起作用,但ff-only不會。(這不是唯一可能的解釋:例如,其他托管站點具有相同的效果,但有時具有不同的按鈕標簽。)
這僅在大約一個月前開始發生。以前,單擊 VSCode 中的“同步”按鈕可以作業,但從那時起它總是失敗并顯示此錯誤訊息。我可以進行某種導致這種行為的 gitconfig 更改嗎?
它可能是您更改的內容,例如設定pull.ff為only. 它可能是其他人更改的內容,例如從MERGEGitHub切換到REBASE AND MERGE.
1我應該補充一點,Git 郵件串列中剛剛修復了一個錯誤,該錯誤pull.ff only拒絕了它不應該存在的無操作案例。我不認為這是在任何已發布的 Git 版本中,只是一些實驗性版本,但如果它在發布中,那可能會解釋一些事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/349274.html
標籤:混帐
