【问题标题】:Files not updating using 'git pull'不使用“git pull”更新文件
【发布时间】:2014-01-02 03:09:29
【问题描述】:

我正在使用Git与其他用户合作,但是今天使用“git pull”无法获取某些文件的最新更改,并且无法看到“git log”中的更改。

可能是什么问题?

【问题讨论】:

  • 你确定他们正确地推动了他们的工作吗?
  • 似乎没有什么可以获取更新。您确定其他用户在同一个存储库中正确提交了文件吗? No Logs 对这个方向表示怀疑。
  • 你确定你的下属已经推到你要拉的分支了吗?
  • 我遇到了同样的问题(我是唯一一个处理这个问题的人)。它让我发疯!在过去的几天里,我一直在进行手动合并,因为没有发生拉动。但是手动合并会引发各种警告,让整个团队都感到害怕。
  • 你的错误信息是什么或者你的 git pull 命令的输出是什么?

标签: git git-pull


【解决方案1】:

对我有用的是,

  1. 删除.git文件夹
  2. 从其他仓库复制.git
  3. 现在git checkout

删除前,您可以尝试

git fetch --all 
git reset --hard origin/master

您需要将master 替换为适当的分支,现在默认为main

【讨论】:

  • 最后两个步骤(获取和重置)对我有用。顺便说一句,“从其他 repo 复制 .​​git”应该不起作用,因为每个 .git 都包含特定于它所属的 repo 的信息。
【解决方案2】:

什么对我有用,

git reset --hard origin/master

这表明某些文件名太长,git 无法从我的存储库中提取它们,因此不匹配和不正确的构建。

所以我跑去修复并再次进行硬重置。

git config --system core.longpaths true

谢天谢地,它奏效了。

【讨论】:

  • 这不会有一些后果吗?
【解决方案3】:

检查您当前的分支。

git status
git branch

如果您不在分支中,则您在 detached HEAD mode 中,git pull 不会合并任何内容。

git log --all --branches

git log 将有助于确保您查看获取的分支(即remote tracking branches)上是否有任何新提交。
我使用 git log alias 将这些提交显示为图表。

【讨论】:

  • 好主意。覆盖边缘情况。
【解决方案4】:

就我而言,问题是我的.git 文件夹中有一个index.lock 文件。我删除了它,并且拉动了。

【讨论】:

  • 出于某种原因,Git 没有提到这一点!
【解决方案5】:

您可能有一个未完成的合并来阻止拉取。检查您是否有正在进行的提交。

【讨论】:

  • 如何检查是否有正在进行的提交?
【解决方案6】:

我只是想添加另一个可能发生这种情况的案例。我正在使用稀疏结帐。出于某种原因,我的工作树中有一个目录,我认为该目录包含在稀疏结帐中(我认为它已列在 .git/info/sparse-checkout 中)但不是(我已将其从 .git/info/sparse-checkout 中删除,出于某种原因我现在忘记了.) 所以它只是被pullcheckoutreset 或任何其他命令忽略。直到我开始在新的克隆中复制稀疏结帐配置并意识到错误之前,这非常令人困惑。

只有在您使用稀疏结帐时才会发生这种情况。如果您不使用稀疏结帐,则不会发生。 (检查 git config 以查看是否启用了 sparseCheckout,并检查 .git/info/sparse-checkout 是否存在,但你会知道你是否正在这样做,因为我认为它必须由用户手动设置。 )(如果您对它是什么感到好奇,请在 Google 上搜索——它只是一种简单的机制,可以在结账时省略文件和目录,否则会被跟踪/拉取/提取等。)

【讨论】:

    【解决方案7】:

    我们的企业 Gitlab 存储库最近从 HTTPS 更改为 SSH,我也遇到了同样的问题。由于我的 repo 仍然使用 HTTPS,任何 git pull 都会被忽略。

    将源改为SSH后,一切又顺利了。

    git remote set-url origin git@gitlab.yourdomain.com:username/repo.git
    

    (要获取 SSH URL,只需单击 Gitlab/Github Web 界面中的“克隆”按钮,然后选择“使用 SSH 克隆”)

    【讨论】:

      【解决方案8】:

      有两种可能的情况:
      1.如果你有Bitbucket、gitlab等账号。
      你可能需要先同步你的fork目录,然后在本地分支上执行git pull。基本上,您必须重新设置您的 fork 副本以与远程 master 同步并在本地副本中执行 git pull。
      2. 尝试重新设置本地工作副本以与远程主机同步。

      【讨论】:

      • 我们如何重新设置本地副本以与远程 master 同步?
      【解决方案9】:

      git reset --hard origin/master

      对我有用,但您必须进入文件夹内部,然后不仅在父文件夹上使用此命令。

      【讨论】:

        【解决方案10】:

        对我来说,这是我在本地进行的提交。 这些提交修改了我想拉的东西。 所以 git pull 不会从 origin 获取文件

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-31
          • 2011-06-02
          • 1970-01-01
          • 2012-01-31
          • 2021-03-05
          • 2019-02-15
          • 2020-06-08
          • 1970-01-01
          相关资源
          最近更新 更多