HOWTO · Git

Git Push --force-with-lease 與 Git Push --force

在本文中,我們將討論 git push --force-with-lease 和 git push --force 命令之間的區別。

本頁內容

本文將討論 git push --force-with-leasegit push --force 命令之間的區別。通常,我們使用 git push 命令將本地更改釋出到遠端倉庫。

讓我們繼續檢查這些命令。

git push --force 命令

將本地更改釋出到遠端倉庫時,我們執行:

$ git push origin

但是,在多個開發人員共享我們的遠端倉庫並將他們的更改釋出到遠端倉庫的情況下,Git 可以拒絕推送。

為了強制 Git 釋出我們的提交,我們在我們的 git push 命令中新增 --force 標誌,如下所示。

$ git push --force origin

使用此命令的缺點是它不考慮其他開發人員推送到遠端倉庫的更改。該命令將根據本地倉庫的狀態覆蓋倉庫。

這可能很危險,因為它會打亂我們的專案時間表。如果你想將更改推送到遠端倉庫並保留其他開發人員所做的更改,你可以這樣做。

git push --force-with-lease 命令

當多個開發人員共享遠端倉庫時,此命令會派上用場。我們在釋出更改時使用它,以避免丟棄其他開發人員推送的更改。

$ git push --force-with-lease origin

讓我們看一個例子。這是我們遠端倉庫的當前狀態。

提交歷史

我們將對 README.md 檔案進行一些更改,並在 GitHub 上提交更改。請注意概述的提交 ID 097ab8b

這是它現在的樣子。

提交歷史更新

注意提交 ID ba29c53

我們現在將在我們的計算機上開啟 README.md 檔案,進行更多編輯,提交更改,然後嘗試 git push

推送嘗試

由於提交歷史不同,Git 拒絕了我們的推送嘗試。我們可以執行 git push --force 命令,但這將丟棄我們在 GitHub 中所做的更改。

我們可以執行 git push --force-with-lease,如下所示。

$ git push --force-with-lease
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 314 bytes | 314.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/Wachira11ke/Delftscopetech.git
 + b7b8e6a...8ddd086 main -> main (forced update)

git push --force-with-leasegit push --force 之間的區別是結果。使用 lease 推送更改有助於我們避免丟棄其他開發人員推送的更改。