HOWTO · Git
Git 拉取不更新檔案
你可以強制 Git 更新本地倉庫中的檔案。我們將討論為什麼 git pull 命令無法使用遠端倉庫中的檔案更新本地倉庫中的檔案。
本文將討論為什麼 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 命令丟棄未跟蹤的檔案。確保你不需要這些更改,因為你無法撤消丟棄。