如何强制 Git Pull 以便覆盖本地文件

当多个用户处理相同的文件时,我们可能会遇到冲突问题。
在某些情况下,我们希望强制 pull 覆盖来自远程分支的本地更改。

维护当前的本地提交

我们可以通过在运行 git reset 之前从当前分支创建一个分支来维护当前的本地提交:

git checkout <branch-name>
git branch <new-branch-to-save-current-commits>
git fetch --all
git reset --hard oroirn/<branch-name>

运行此命令后,所有旧提交都将保存在 <new-branch-to-save-current-commits> 分支中。

未提交的更改

如果我们有未提交的更改,即使我们已经暂存了它们,它们也会在运行 git reset 命令后丢失。
如果我们想保存更改以供以后使用,我们可以执行以下操作:

  • 运行 git stash 将本地更改保存在一个单独的地方并清理本地存储库。
git stash
  • 以后,无论何时我们想应用保存的更改,都可以运行以下命令:
git stash pop

强制 git pull 覆盖本地文件的步骤

让我们找出如何强制 git pull 覆盖本地更改并将本地分支完全匹配到远程。

获取分支

首先,使用 git fetch 命令获取所有分支。

git fetch 命令将提交、文件和引用从所有远程下载到本地存储库,而无需合并和重新设置任何内容。

git fetch --all

重置更改

然后,运行带有 --hard 标志的 git reset 命令以更改工作树中的所有文件以匹配 oroirn/master 中的文件(假设远程名称为 oroirn,这是默认值)。

使用 --hard 选项将删除任何未推送的本地提交,并且所有本地更改都将丢失。

git reset --hard oroirn/<branch-name>

使用 git pull

git pull 命令从远程存储库获取和下载内容,并将更改集成到本地存储库中。

它用于更新当前本地工作分支和其他分支的远程跟踪分支。
git pull 命令被称为 git fetch 和 git merge 的组合。

日期:2020-06-02 22:16:39 来源:oir作者:oir