在 Git 中获取代码的最新版本

Abdul Jabbar 2023年1月30日 2022年7月18日
  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.
Author: 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