Git 拉取不更新檔案

John Wachira 2023年1月30日 2022年4月22日
  1. git pull 由於缺少資訊而沒有更新檔案
  2. git pull 由於本地倉庫中未提交的檔案而不更新檔案
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 命令丟棄未跟蹤的檔案。確保你不需要這些更改,因為你無法撤消丟棄。

Author: John Wachira
John Wachira avatar John Wachira avatar

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