【问题标题】:Reset changes in git comes backgit中的重置更改回来了
【发布时间】:2017-08-28 07:53:17
【问题描述】:

我克隆了一个 git repo。我没有在本地对该 repo 进行任何更改,但是当我运行 git pull 时,会显示此消息:

error: Your local changes to the following files would be overwritten by merge: ....

git reset --hard head 我可以在 Github 桌面应用程序中看到更改已恢复。

但是当我再次运行git pull 时,更改又回来了,我可以再次在 Github 桌面中看到它们,并且再次看到相同的消息。这里有什么问题?

编辑 1

我运行了 git status,它显示的文件与 Github Desktop 中的文件相同。我怎样才能恢复更改。我没有做这些改变。我使用两台机器,这些更改是在另一台机器上进行的,我在那里添加它们,提交它们并将它们推送到在线仓库。我不知道为什么我在这台机器上看到这些变化,我只拉了它们。

编辑 2

这发生在 mac 上,运行 git clean -f -d 没有帮助。这些文件实际上已被跟踪,但我无法重置/恢复它们。 – Arian Hosseinzadeh 4 小时前。

【问题讨论】:

  • 好吧,git 认为您在本地更改了文件。您是否运行过git status 来查看它认为您更改了哪些文件?
  • 看看git status 怎么说。有时这是由于模式更改或 CRLF 更改而发生的。 (Windows 的存在让每个人都感到痛苦)
  • 另外,当您执行git status 时,请查看您的分支中当前是否有git pull 试图覆盖的未跟踪文件。如果是这种情况,git reset --hard 不会为您删除这些文件,而您可能是这些文件的 pulling 版本,它们会覆盖您本地计算机上的文件。您可以通过git clean -f -d 删除工作副本中未跟踪的文件和目录。
  • 我运行了git status,它显示了相同的文件。我怎样才能恢复更改。我没有做这些改变。我使用两台机器,这些更改是在另一台机器上进行的,我在那里添加它们,提交它们并将它们推送到在线仓库。我不知道为什么我在这台机器上看到这些变化,而我只是将它们拉出来。
  • 这发生在 mac 上并且运行 git clean -f -d 没有帮助。这些文件实际上已被跟踪,但我无法重置/恢复它们。

标签: git github


【解决方案1】:

原来修改的文件是eclipse生成的.class文件。我停止了eclipse,删除了本地repo,再次克隆了它,将target目录添加到.gitignore,然后启动了eclipse。最后,我将更改推送到 github repo。

【讨论】:

    【解决方案2】:

    试试

    git config pull.rebase true
    git config rebase.autostash true
    

    然后 git pull 应该首先存储任何修改过的文件,获取,在(获取的)远程分支之上重新设置任何本地提交。

    还要检查 git config core.autocrlf 返回的内容:尝试将其设置为 false,然后再试一次 git pull

    【讨论】:

      猜你喜欢
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 2014-02-20
      • 1970-01-01
      • 2014-04-23
      • 2015-12-26
      • 1970-01-01
      相关资源
      最近更新 更多