为什么我的git命令不会覆盖我的本地更改?

时间:2018-05-24 18:37:17

标签: ruby-on-rails git github

我正在研究一个Ruby项目,只是做了一些关于迁移和实体的错误决定。

好的,我会得到我的主分支的内容并覆盖我做的坏工作。

我用:

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

但是我在本地添加的文件仍然存在。我做错了什么?

2 个答案:

答案 0 :(得分:0)

当你没有提交任何东西时,你不需要重置(我认为这就是这种情况)。

只需致电git checkout .即可摆脱任何未提交的更改。

长篇故事是:

Git在少数"阶段存储变化"。

  • 当您更改文件,然后进行非分段更改时,请为每个文件使用git checkout <changed_file>git checkout .还原
  • 当您暂存文件git add <filename>或文件的一部分甚至是git add -p时,它就会被称为暂存,准备提交。您仍然可以使用git reset HEAD <file>
  • 返回
  • 当你提交时,提交是在你的本地分支中创建的,这就是你要使用的时候
    • git reset origin/master删除提交,但保留更改(返回第一点)
    • git reset --hard origin/master与上述相同,但清除所有更改

因此,对于您的情况,要删除本地未提交的更改:git checkout .,如果您有一些提交,则不想要git reset --hard origin/master

答案 1 :(得分:0)

这里的秘诀是使用git clean -f删除所有非暂存文件。