【问题标题】:Why my git commands doesnt override my local changes?为什么我的 git 命令不会覆盖我的本地更改?
【发布时间】:2018-11-04 01:51:28
【问题描述】:

我正在处理一个 Ruby 项目,但刚刚在迁移和实体方面做出了一些错误的决定。

好的,我将获取我的主分支的内容并覆盖我所做的糟糕工作。

我使用:

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

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

【问题讨论】:

    标签: ruby-on-rails git github


    【解决方案1】:

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

    只需致电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

    【讨论】:

    • 没什么。我想用远程数据覆盖我所有的本地更改。
    • 我做了所有事情,但所有未暂存的文件都继续存在。它们不会被删除。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-12-11
      • 1970-01-01
      • 2013-03-24
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 2012-08-09
      相关资源
      最近更新 更多