[英]rejected master -> master (non-fast-forward)
我正在嘗試推送我的項目(新存儲庫中的所有文件)。 我按照這些步驟操作,但是當我使用git push -u origin master
推送時,出現此錯誤:
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:asantoya/projectnewbies.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 的推薦用法。 這將覆蓋遙控器上的更改。 僅當您 100% 知道您的本地更改應該推送到遠程主服務器時才這樣做。
⚠️ 試試這個: git push -f origin master
正如錯誤消息所說: git pull
before you try to git push
。 顯然,您的本地分支與您的跟蹤分支不同步。
根據項目規則和您的工作流程,您可能還想使用git pull --rebase
。
這個命令對我很有效
git push -f origin master
git push -f origin master
使用蠻力 ;-) 很可能您正在嘗試添加在 git 上創建 repo 之前創建的本地文件夾。
我剛剛收到此錯誤。
我在創建本地 git 存儲庫后創建了一個 github 存儲庫,因此我需要在推送到 github 之前接受對本地的更改。 在這種情況下,唯一的變化是創建 github 存儲庫時作為可選步驟創建的自述文件。
git pull https://github.com/*username*/*repository*.git master
存儲庫 URL 來自項目 github 頁面上的這里:
然后我重新初始化(這可能不需要)
git init
git add .
git commit -m "update"
然后推:
git push
如果git pull
沒有幫助,那么您可能已經推送了更改(A),然后使用git commit --amend
添加了更多更改(B)。 因此,git 認為您可能會丟失歷史記錄 - 盡管它包含來自 A 的所有更改,但它將 B 解釋為不同的提交。
B
/
---X---A
如果在A
之后沒有人更改 repo,那么您可以執行git push --force
。
但是,如果其他人在A
之后發生了變化:
B
/
---X---A---C
那么你必須重新確定人從A
到B
( C
-> D
) 的變化。
B---D
/
---X---A---C
或手動修復問題。 我還沒想好怎么做。
我在 github 中創建了新的 repo 並且我遇到了同樣的問題,但是在拉動時它也有問題,所以這對我有用。
但是在已經有很多代碼的回購中不建議這樣做,因為這可能會弄亂一切
git push origin master --force
警告:
尋求“ git pull
”並不總是解決方案,所以要小心。 如果您有意更改了存儲庫歷史記錄,您可能會遇到這個問題(Q 中提到的那個)。 在這種情況下,git 會將您的歷史更改與遠程存儲庫中的新更改混淆。 因此,您應該使用git push --force
,因為調用git pull
會有意撤消您對歷史記錄所做的所有更改。
使用這個命令:
git pull --allow-unrelated-histories <nick name of repository> <branch name>
喜歡:
git pull --allow-unrelated-histories origin master
當項目沒有任何共同的祖先時會發生此錯誤。
這是因為您在 master 中做了一些更改,因此項目要求您先拉取。 如果您無論如何都想推動它,您可以通過鍵入以下內容使用蠻力:
git push -f origin master
請記住首先提交您的更改:
git add .
git commit -m "Your commit message"
試試這個命令:“git pull origin master”
它對我有用。
檢查此鏈接: https : //help.github.com/articles/dealing-with-non-fast-forward-errors
你需要做
git branch
如果輸出是這樣的:
* (no branch)
master
然后做
git checkout master
確保您沒有任何掛起的提交,因為簽出將丟失所有未提交的更改。
! [拒絕] master -> master(非快進)
不要驚慌,這是非常容易修復的。 您所要做的就是發出拉動,您的分支將快進:
$ git pull myrepo master
然后重試你的推送,一切都應該沒問題:
$ git push github master
當我在開發分支並且我的主分支沒有最新更新時,這發生在我身上。
所以當我嘗試從開發分支 git push 時,我遇到了那個錯誤。
我通過切換到 master 分支,git pull 來修復它,然后返回到開發分支和 git push。
$ git fetch && git checkout master
$ git pull
$ git fetch && git checkout develop
$ git push
我在開發機器上遇到了這個問題。 dev
分支推得很好,但master
分支給了我(當在dev
分支上時git push
):
! [rejected] master -> master (non-fast-forward)
所以我試過:
git checkout master
git pull
這給了我:
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me, either.
我發現.git/config
缺少 master 分支並添加了:
[branch "master"]
remote = origin
merge = refs/heads/master
之后git push
在dev
分支上也運行良好。
我有同樣的問題。 我使用 Git Totoise。 只需右鍵單擊 -> TotoiseGit -> 清理。 現在你可以推送到 Github 它對我很好:D
這是因為您對其 master 進行了相互沖突的更改。 而你的存儲庫服務器無法用這些話告訴你,所以它會給出這個錯誤,因為他為你處理這些沖突不是他的事情,所以他要求你自己做。 作為 ?
1- git pull
這會將您的代碼從您的存儲庫合並到您的站點主代碼。 所以顯示沖突。
2- 處理這些手冊沖突。
3-
git push origin master
而且很快,您的問題已經解決。
這也可能是由於在為 Repo 命名時導致的一些名稱錯誤造成的。 如果上述任何答案都不起作用。這對我有用:
刪除該存儲庫並創建一個新存儲庫,然后再次嘗試以下命令:
cd 'Local Directory Path'
git remote add origin *your_git_name.git*
git push -u origin master
如果添加原點顯示已經存在,請改用它:
git remote set-url origin *your_git_name.git*
我唯一能夠解決這個問題的是刪除本地和 git repo 並在兩端再次創建相同的。 目前工作正常。
如果有人在嘗試推送到 heroku 時遇到此錯誤,則只需將 'origin' 替換為 'heroku',如下所示: git push -f heroku master
試試這個,在我的情況下它有效
git rebase --abort
我也遇到了同樣的錯誤,但我通過獲取它的 URL 輕松解決了它
git fetch origin Your repository origin
然后簡單地應用命令
git push -f origin master
你會得到一個好的結果
這意味着您的遠程 git 存儲庫配置為denyNonFastforwards = true
。 盡管很危險,但有時您可能確實需要覆蓋 git 歷史記錄(例如,在運行bfg --strip-blobs-bigger-than 100M
之后),因此您可以暫時將該設置修改為false
( denyNonFastforwards = true
,請在your-repository.git/config
)然后強制推送(即git push -f
)。
有時,Git 無法在不丟失提交的情況下對遠程存儲庫進行更改。簡而言之,這可能是因為您的提交丟失或者其他人試圖推送到與您相同的分支。 所以要解決這個問題,首先提出一個拉取請求
$ git pull origin YOUR_BRANCH_NAME
或者
$ git pull --rebase origin master
我首先解決了這個問題:
- 腳步 -
git 添加 *
git 獲取
git pull origin main --allow-unrelated-histories 或 git pull --rebase <your_reponame> <your_branch>
git push -u "" main 或 git pull origin [branch]
為我工作
git push --force origin master
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.