簡體   English   中英

如何在不推 --force 的情況下修復 git 中的非快進問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM