在 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