Git 拉取不更新文件
本文将讨论为什么 git pull
命令无法使用远程仓库中的文件更新本地仓库中的文件。
git pull
功能可能由于多种原因而出现故障。我们将研究常见的原因以及如何解决这些问题。
git pull
由于缺少信息而没有更新文件
当 Git 没有足够的信息可以使用时,你可能会收到一条错误消息,如下所示。
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=<remote>/<branch> master
如果你收到这样的消息,Git 将要求你指定远程分支以跟踪你当前的本地分支。使用 git branch --set-upstream-to=<remote>/<branch> master
命令,然后运行 git pull
命令将 Git 指向你希望更改的来源。
git pull
由于本地仓库中未提交的文件而不更新文件
作为源代码管理系统,Git 尽最大努力防止你丢失文件和数据。出于这个原因,Git 可能会在执行 git pull
命令时拒绝将你的本地文件与远程仓库中的文件合并。
由于 Git 没有 forced git pull
命令,你可以调用系统来合并更改。如果你有未提交的更改,你可能会收到如下所示的错误消息。
$ git pull
From REPOSITORY_URL
* branch master -> FETCH_HEAD
a152b19..171e4a2 master -> origin/master
Updating a152b19..171e4a2
error: Your local changes to the following files would be overwritten by merge:
file1.txt
file2.txt
Please commit your changes or stash them before you merge.
Aborting
为了解决这个问题,在运行 git pull
命令之前运行 git stash
命令来存储你的本地更改。
最后一步是在 git pull
命令之后运行 git stash apply
。此命令会将隐藏的更改应用到你的工作目录。
$ git stash
Saved working directory and index state WIP on master: d91368b Previous commit message
$ git pull
From REPOSITORY_URL
* branch master -> FETCH_HEAD
a152b19..171e4a2 master -> origin/master
Updating a152b19..171e4a2
Fast-forward
file1.txt | 1 +
file2.txt | 1 +
2 files changed, 2 insertions(++)
$ git stash apply
你还可以在运行 git pull
命令之前提交更改。
$ git commit -am 'Committing two files before git-pull'
[master d91368b] Committing two files before git-pull
2 files changed, 2 insertions(++)
$ git pull
From REPOSITORY_URL
* branch master -> FETCH_HEAD
a152b19..171e4a2 master -> origin/master
Updating a152b19..171e4a2
Fast-forward
file1.txt | 1 +
file2.txt | 1 +
2 files changed, 2 insertions(++)
如果你不需要本地更改,你可以在运行 git pull
命令之前丢弃它们。
你可以使用 git rest --hard
命令和 git clean -fd
命令丢弃未跟踪的文件。确保你不需要这些更改,因为你无法撤消丢弃。
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn