在 Git 中獲取程式碼的最新版本

Abdul Jabbar 2023年1月30日
  1. 當你不關心本地更改時獲取最新版本的程式碼
  2. 當你關心本地更改時獲取最新版本的程式碼
在 Git 中獲取程式碼的最新版本

Git 是開發人員日常使用的工具,尤其是在團隊合作時;它在軟體行業中起著至關重要的作用。該版本控制工具為其開發人員提供了大量的命令,他們通過這些命令根據分配給他們的工作執行不同型別的任務。

本文將教我們如何通過各種 Git 命令獲取最新的程式碼版本。通過兩種不同的方式,我們可以從本地倉庫中的倉庫更新我們最新的版本程式碼。

當你不關心本地更改時獲取最新版本的程式碼

如果本地更改對我們來說沒有任何問題,那麼我們可以通過以下三種不同的方式更新我們的程式碼:

步驟 1

首先,我們將使用以下 Git 命令通過 git fetch 命令獲取最新程式碼:

git fetch origin

此命令將顯示更新的分支。git fetch 命令使我們能夠訪問另一個儲存庫的完整分支結構。

在將提交與我們的本地儲存庫結合之前,獲取被認為是檢視提交的最安全方法。

之後,我們將通過命令 git reset 重置程式碼,繼續使用標誌 --hard origin

git reset --hard origin/[tag/branch/commit-id usually: master]

此命令用於踢出所有暫存和未暫存的更改。它還會忽略當前本地分支上的所有內容,並使其與遠端儲存庫上的 origin/master 相同。

步驟 2

在此過程中,我們將通過以下命令刪除整個資料夾:

rm -rf [project_folder]

此命令將從 Git 儲存庫中遞迴刪除整個資料夾以供將來重新使用。

之後,我們將使用下面提到的命令通過命令 git clone 克隆儲存庫:

git clone [remote_repo]

當我們執行 git clone 時,專案歷史的每個檔案的每個版本都會被克隆,即使所有內容都複製到遠端儲存庫中。

步驟 3

我們現在提到的方法更具破壞性,因此最好堅持使用步驟 2 或 1,如上所述。

git reset --hard HEAD

上面的命令會丟擲我們所做的所有未提交的更改,並且仍在我們本地更改的暫存區域中。現在我們將使用以下命令清理工作樹:

git clean -xffd

上述命令會將工作樹清理為預設狀態。

git pull

此命令將從遠端倉庫獲取更新。它是 git fetchgit merge 的混合體。

它從遠端儲存庫獲取更新,儘快在我們本地執行最新的更改,並更新本地分支。

當你關心本地更改時獲取最新版本的程式碼

步驟 1

通過執行以下命令,我們將不會遇到與新線上版本的衝突,因為有時衝突非常危險,需要時間來解決。

git fetch origin
git status

上述命令的輸出將有點像這樣:

Your current branch is much behind 'origin/master' by only 1 commit and can be fast-forwarded.

一旦我們得到上面的輸出,我們就執行 git pull 命令。此外,我們將獲得最新版本的儲存庫。

git pull

步驟 2

通過執行這些命令,我​​們將面臨與新線上版本的衝突:

git fetch origin
git status

這些命令將報告如下內容:

error: Local changes to the files given must be overwritten with the help of merge:
    file_name
Changes should be committed or stashed before merging.
Aborting

現在,我們將通過下面提到的命令提交我們的本地更改,如下所示:

git add .
git commit -m 'Commit msg'

在那之後,我們將嘗試獲取不起作用的更改。

git pull

這個 git pull 將報告如下內容:

Here pull can not be applied because you have unmerged files.
use 'git commit -a'.

出現此錯誤後,我們將開啟衝突檔案,並嘗試通過執行以下命令來修復已發生的衝突:

git add .
git commit -m 'Fix conflicts'
git pull

這些命令的輸出如下:

Already up-to-date.
作者: 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 Repository