Git 强制拉取
在本教程中,我们将学习如何在 Git 中强制从远程仓库中拉取更改。
有时,我们可能需要丢弃本地修改,并在协作开发环境中用远程仓库中的更新替换它们。
我们使用 git pull
命令从远程仓库中获取更改到本地仓库中的本地分支。
只有当本地分支中的更改落后于远程仓库中的更改时,git pull
命令才会成功。
如果本地分支和远程仓库的更改发生分歧,如果我们希望丢弃本地更改,我们需要强制执行 git pull
以覆盖本地更改,
我们现在将通过一个例子来详细说明这一点。
使用 git fetch
、git reset
和 git merge
强制拉取 Git 中的远程更改
git pull
命令不是一个单一的操作。git pull
命令运行命令即。git fetch
从远程仓库中获取数据,然后命令 git merge
将这些更改合并到本地仓库中。
因此,git pull
命令按如下方式运行这两个命令。
$ git fetch
$ git merge origin/$CURRENT_BRANCH
git fetch
命令从远程仓库下载最新更改。它不会对本地仓库进行任何合并
或变基
。
上面给出的 git merge
命令合并来自远程仓库的更改,由别名 origin
给出,这些更改已添加到 $CURRENT_BRANCH
,这些更改尚未出现在本地仓库的本地分支中。
因此,如果本地仓库中的本地分支与远程仓库中的分支不同,则 git pull
将失败。
我们可能对本地分支的工作树中的文件进行了一些本地更改。因此,这会导致 git pull
失败。
我们现在可能决定放弃本地更改以支持远程仓库中的更改。
因此,我们需要强行拉取将覆盖本地修改的更改。
我们需要执行以下操作来实现对远程更改的强制拉取。
$ git fetch
$ git reset --hard HEAD
$ git merge origin/$CURRENT_BRANCH
带有 --hard
选项的 git reset
命令会将分支重置为我们刚刚获取的内容。它还将丢弃对跟踪文件的任何本地更改,并且将删除未跟踪的文件。
因此,请谨慎使用,因为任何本地更改都将丢失。
或者,我们可以在拉取更改之前保存本地更改。我们可以使用 git stash
存储更改以及更改的拉取。
我们可以这样做。
$ git fetch
$ git stash
$ git merge origin/$CURRENT_BRANCH
$ git stash pop
因此,当我们使用 git stash
时,我们不再需要对本地仓库的本地分支执行 git reset
。
我们使用 git stash pop
从存储中获取本地更改。
相关文章
如何在 Windows 系统中卸载 git
发布时间:2023/04/09 浏览次数:223 分类:Git
-
在这篇简短的文章中,我们将学习如何卸载 Git,以及如何在从个人计算机的目录中卸载 Git 后删除这些文件。
Git 如何重命名本地分支
发布时间:2023/04/09 浏览次数:64 分类:Git
-
大多数情况下,重命名分支机构是由于上述情况。 因此,在本教程中,我们将学习使用下面提到的技术更改本地 Git 分支的名称。
重命名 Git 存储库中的文件和目录
发布时间:2023/04/09 浏览次数:102 分类:Git
-
在本文中,我们将讨论 git 中的重命名过程。 我们使用 Git Rename 来更改工作目录中文件和文件夹的名称。
在 Git 中取消初始化存储库
发布时间:2023/04/09 浏览次数:187 分类:Git
-
本本文介绍如何通过 Git 命令行取消初始化 Git 存储库。git init 命令开发一个新的空置 Git 存储库。 它还用于重新初始化已经存在的 Git 存储库。
Git 仓库名称该如何命名
发布时间:2023/04/09 浏览次数:208 分类:Git
-
使用 Git 时,选择一个简洁且最新的存储库名称是一项艰巨的任务。本教程介绍了如何以独特的方式命名 Git 存储库。
配置 Git 以忽略文件模式更改
发布时间:2023/04/09 浏览次数:67 分类:Git
-
本文讨论配置 Git 以忽略文件更改 chmod 所需的步骤。 如果您更改 Git 正在跟踪的文件的权限,系统将在该文件中注册更改。
在 Git 中暂存已删除的文件
发布时间:2023/04/09 浏览次数:93 分类:Git
-
本文讨论了在 Git 中暂存已删除文件的必要步骤。我们知道 rm 命令可以删除一个文件,而无需将其从工作目录中移除。 那么,我们如何暂存已删除的文件以进行提交呢?
在 Git 中显示冲突文件
发布时间:2023/04/09 浏览次数:139 分类:Git
-
本文讨论在 Git 中列出冲突文件的最简单和最干净的方法。 我们可以使用 git status 命令,但这很麻烦,尤其是当我们有大量不冲突的文件时。