【问题标题】:git pull: keeps telling me to stash local changes before pullinggit pull:一直告诉我在拉取之前存储本地更改
【发布时间】:2014-01-01 08:49:20
【问题描述】:

当我尝试使用“git pull”拉取我的 git 存储库时,它一直告诉我我有本地更改,尽管我没有触及任何提到的文件。有人可以解释这种行为并知道解决方案吗?

git 状态:

    # On branch master
# Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
#   (use "git pull" to update your local branch)
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   src/component/Provider.java
#   modified:   src/data/Cascading.java
#
no changes added to commit (use "git add" and/or "git commit -a")

解决了问题。实际上是我的错,没有注意到远程存储库已重置为以前的版本。不过,如果您遇到这种情况,Max Woolf 解释的解决方案将会奏效!

【问题讨论】:

  • 如果你创建一个git diff 或者只是创建一个git commit . -m "." 怎么办??
  • git status 的输出是什么?
  • 在这些情况下正确的心态是 Git 是对的,而你是错的。你可能做了一些 Git 认为是改变的事情;请发布“git status”的输出以供审核。
  • 更新了问题。
  • 那么 Git 认为你对文件做了哪些更改 (git diff)?

标签: git git-merge git-pull


【解决方案1】:

如果您在本地编辑的文件在远程被更改,Git 根本无法提取更改。基本上,您有两种选择:

  • 暂存并提交您的更改,然后 Git 将在拉取期间尝试合并它(或寻求您的帮助);
  • 存储更改,将它们放在一边,这样您就可以提取远程代码,然后重新应用您的修改。

【讨论】:

    【解决方案2】:

    听起来您的本地分支并没有对origin 进行所有更改。

    首先,存储您的更改

    git stash
    

    然后,从origin 中提取更改。

    git fetch origin && git rebase origin/(branch name)
    

    接下来,将存储添加回您的工作目录:

    git stash pop
    

    【讨论】:

      【解决方案3】:

      添加所有文件(添加您更改的所有文件)

      git add .
      

      然后存储您的更改

      git stash
      

      那么你应该可以

      git checkout branch && git pull
      

      您可能已经接触过这些文件,您可以转到这些文件并检查已接触过的行。我通常为此使用vscode。你也可以通过 git restore 来恢复这些文件。

      【讨论】:

        猜你喜欢
        • 2011-08-12
        • 2020-04-04
        • 2016-12-11
        • 2012-05-11
        • 2021-08-21
        • 2020-11-05
        • 1970-01-01
        • 2019-05-12
        • 2021-09-26
        相关资源
        最近更新 更多