您是否曾经在git中进行项目并遇到错误,告诉您git pull
因为有本地更改而无法使用?
error: Untracked working tree file 'App.vue' would be overwritten by merge
这通常是一些更改已提交到您从中提取的存储库 – 但您在本地有一个类似的文件。例如,如果一个文件被意外添加到名为 的存储库README.md
中,而您已经README.md
在本地版本中。
但有时,您想强制使用 repo 中找到的文件覆盖您的文件。在这种情况下,您的本地更改将被远程存储库中的更改替换。
强制 git pull#
要强制 a git pull
,您需要做三件事:
- 首先同步并获取所有远程存储库更改。
- 备份您当前的分支 – 因为当我们强制拉取时,所有更改都将被覆盖。
- 强制
git pull
.
这里要做的重要事情是备份,您可以将所有本地更改提交到备份分支。如果您担心覆盖文件,也可以将文件复制到其他地方。如果您不将本地更改提交/备份到另一个分支,它们将被覆盖,因此请小心。:)
要强制 a git pull
,我们运行以下命令来创建备份分支,然后git pull
在 master 分支上强制:
git fetch --all # Creates a new branch git branch my-backup-branch # Switch to the new branch.. we'll use it to backup our local changes git switch my-backup-branch # Add all files to a commit git add . # Commit the new branch, so that it is saved git commit -m "Backup of branch" # Switch back to our main branch, `master` git switch master # Force git pull using `git reset --hard` git reset --hard origin/master
强制 Git 拉取
强制从远程存储库执行 git pull 的关键命令是git reset --hard origin/master
. 其他命令是通过备份确保您不会丢失任何数据!
首先,git fetch --all
将我们的远程同步到我们的本地。然后,git branch my-backup-branch
创建一个新分支,我们切换到该分支进行备份。之后,我添加了commit
, 以便我们在该备份分支上提交任何更改my-backup-branch
,因此内容保持保存。如果您不将更改提交到备份分支,您将丢失它们。
然后我们切换回我们的主master
分支,假设您的主分支被调用master
。如果它被称为别的东西,您将不得不使用该命令。您可以通过运行查看所有其他可切换到的分支git branch --list
。
最后,我们使用git reset --hard origin/master
强制 git pull。这将强制覆盖您所做的任何本地更改。
你完成了。现在您的本地更改将备份到分支上my-backup-branch
,所有远程更改都将强制进入您的master
分支。
找不到来源/主人
如果你找不到origin/master
,你现在可能在你的原点上有那个分支。相反,请尝试运行git branch -r
以查看任何远程分支,以便从中选择您想要的分支git reset