在 Git 中強制拉取覆蓋

Abdul Jabbar 2023年1月30日
  1. 在 Git 中強制拉取
  2. 拉入 Git 時保持本地提交
  3. 拉入 Git 時保持本地更改
在 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 Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

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

相關文章 - Git Pull