【问题标题】:Why is git "pull origin master" not re-creating all the remote files in the local repo?为什么 git "pull origin master" 没有在本地 repo 中重新创建所有远程文件?
【发布时间】:2017-04-06 15:27:22
【问题描述】:

我是 git 新手,但我已经能够在共享驱动器上创建一个裸远程存储库,以便与同事共享。我创建了一个test.txt 文件,将其添加到本地存储库,将其提交到本地存储库,然后将其推送到远程存储库。然后我删除本地存储库中的test.txt 文件。

此时,我想将test.txt 文件从远程存储库复制到本地存储库。如果我删除本地存储库并克隆远程存储库,test.txt 文件会显示得很好。但是,我不确定如何在不完全删除存储库并重新开始的情况下在本地存储库中重新创建 test.txt 文件。

根据我阅读的内容,我认为我应该能够运行git pull origin master,但是当我这样做时,test.txt 文件不会重新出现在我的本地存储库中。

我还在纠结 git,所以我可能想错了。我想我在想我应该能够将本地存储库“重置”到远程存储库并重新开始,而无需再次克隆它。

更新: 我刚试过这个,它似乎工作:git reset --hard origin/master。不确定这是否是正确的方法或 --hard origin/master 的确切含义。

【问题讨论】:

  • 如果你是 Git 新手,我建议避免 git pull。 pull 命令是为了方便:它首先运行git fetch,然后是另一个Git 命令,通常是git merge。问题是它运行第二个命令的方式:(1)掩盖了Git的工作方式,使其更难学习; (2) 如果第二个命令发生故障,您将无处可去,就像它最终那样。如果你自己运行第二个命令,你可以看到发生了什么,从而掌握如何修复它。 (第 3 项,“pull”充满了 bug,大部分由 Git 2.0 修复...)

标签: git


【解决方案1】:

当您在本地删除“已提交”文件时,您机器上的 git 会跟踪它作为更改。因此,git pull 不会覆盖您的本地更改,除非您提出要求。

您可以在删除之后、拉取之前和拉取之后运行命令git status 来尝试。

如果你想用远程仓库重置你的本地仓库,你正在寻找的命令是git reset --hard HEAD

我也会推荐这个很棒的 thread 来帮助你开始使用 git

【讨论】:

  • git reset --hard HEAD 做到了。谢谢。我不清楚HEADorigin/master 之间的区别。
  • 很高兴能帮上忙,git 需要一些时间来解决你的问题,但是太棒了......看看这个答案以了解什么是 head:stackoverflow.com/questions/2529971/what-is-the-head-in-git 并看看这个人git pull 和 git reset 的页面
猜你喜欢
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
  • 2011-02-22
  • 2011-11-13
  • 2020-07-27
  • 1970-01-01
  • 2017-10-20
相关资源
最近更新 更多