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 命令丟棄未跟蹤的檔案。確保你不需要這些更改,因為你無法撤消丟棄。