在 Git 中強制拉取覆蓋
Git 是當今最流行和要求最高的版本控制系統。Git 的使用者介面類似於其他版本控制系統。我們可以登入、克隆倉庫並進行提交。
但是,Git 具有一些顯著的差異,使其比其他系統更復雜。
Git 是分散式的。每個使用者都有自己的倉庫,而不是所有倉庫都儲存在一箇中央位置。每個人都必須連線到另一個倉庫才能使用它。這有點煩人,但這也意味著我們可以在不同位置處理相同的檔案。我們可以在多個地方處理同一個專案,並且更改是同步的。
我們在這裡瞭解如何強制拉取當前工作本地分支中的所有更改。事實上,我們可能碰巧有一箇舊的 git 倉庫,它沒有與具有最新更改的遠端倉庫同步,我們也可能有也可能沒有遠端最新提交,現在我們想要提取所有最新的遠端更改,我們甚至都不關心當前倉庫中的本地更改,那麼對於這種情況該怎麼辦。此問題的解決方案如下。
在 Git 中強制拉取
通過命令 pull
的名稱,我們可能認為我們可以在這裡使用 git pull
命令,但這並不是在 Git 中使用 pull 命令的理想方式。因此,有兩種方法可以處理這種情況,一種是刪除當前本地倉庫並再次克隆同一倉庫,但缺點是我們丟失了當前倉庫中已經存在的未跟蹤檔案。
首先,我們將執行 fetch --all
,如下所示。
git fetch --all
這裡的命令 git fetch
將從遠端下載最新的,而不合並或重新設定任何內容。然後,如上執行 fetch 後,如果我們在 master
分支上,我們將執行以下命令進行重置:
git reset --hard origin/master
通過執行上述命令 git reset
,它會將主分支重置為我們剛剛獲取的內容,或者如果我們在任何其他分支上,我們將使用分支名稱如下。
git reset --hard origin/<branch_name>
上面的 --hard
選項將更改我們工作樹中的所有檔案以匹配 origin/master
分支中的檔案。
拉入 Git 時保持本地提交
如果我們想保留本地提交,我們必須在執行 reset
命令之前從我們所在的分支建立一個本地分支。
git checkout master
git branch new-backup-branch
git fetch --all
git reset --hard origin/master
上面提到的命令僅適用於知道自己在做什麼的專家使用者。警告是針對上述命令的:僅謹慎使用上述命令,並確保在應用它們之前知道它們的操作意味著什麼!
拉入 Git 時保持本地更改
當我們執行 reset
命令時,未提交和暫存的更改都將丟失。那麼在本地倉庫中保留這些更改的解決方案是什麼?
如果我們想保留這些更改,我們將在執行重置命令之前使用 stash
命令,並且在執行 pull
之後,我們可以在更改之上 pop
隱藏的更改。為此,我們將執行以下命令:
git stash
並且在完成重置和拉取之後,如果我們想重新應用這些隱藏的更改,這樣,我們將再次在工作目錄中獲取我們的本地更改。我們將使用以下命令來取回我們的更改:
git stash pop
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn