[英]how to fix the non-fast-forward in git without push --force
我有一個問題,我試圖在 github 向我的倉庫添加提交,但我得到了這個,請參閱 git bash 的圖像,我嘗試再次推送但未出現錯誤提示答案,但沒有解決我的問題,我也不需要使用,因為我不需要刪除 repo 中的提交
-我使用的命令
1- $ git -u push origin master
2- $ git pull origin master
注意:我在截屏之前已經被拉了,它可以正常加載。
我的回購鏈接在 github github 鏈接
謝謝你。
我猜你已經從新目錄或類似目錄中克隆了一個項目? 或者在沒有先拉動的情況下開始一個新項目。
您可以嘗試使用此標志--allow-unrelated-histories
合並兩個不相關的 git 樹歷史記錄。 盡管這不是很好的做法,並且可能會導致將來出現問題。
git pull origin master --allow-unrelated-histories
您在 Github 上的遠程倉庫有兩個提交,我們稱它們為 A 和 B。您的本地倉庫有完全不同的提交,我們稱它們為 C 和 D。看起來像這樣。
A - B [origin/master]
C - D [master]
您可以使用git log --decorate --all --graph
查看存儲庫的類似完整視圖。
master 是您本地存儲庫的 master 分支,origin/master 是您的本地存儲庫上次在 Github 上看到 master 的位置。
由於它們沒有任何共同之處,因此 Git 不會合並它們。 你如何處理這種情況取決於你是如何進入的,C 和 D 中有什么,以及你想保留什么。
在您決定要保留的內容之前,不要開始運行命令。
解決此問題的一種方法是使用git init
然后git remote add <repo-url>
代替使用git clone <repo-url>
-url> 。 這會導致一個空的本地存儲庫。 在獲取遠程存儲庫的內容之前,您需要先git fetch
。
有關這種情況的更多信息,請參閱此答案。
如果您想保留所有提交,請將本地更改基於遠程更改。 這將使您仿佛一直在遠程代碼之上完成本地工作。
$ git rebase origin/master
A - B [origin/master]
\
C - D [master]
$ git push
A - B - C - D [master]
[origin/master]
如果 C 和 D 在 A 和 B 中重復工作,可能會出現沖突,例如不同的 README.md 文件。 你必須解決它們。
如果你想丟棄遠程更改, git push --force
用你自己的替換整個主分支。
$ git push --force
C - D [origin/master]
[master]
如果您想丟棄您的本地更改,請使用git reset
將您的本地主分支移動到與遠程相同的提交。
$ git reset --hard origin/master
A - B [origin/master]
[master]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.