代码之家  ›  专栏  ›  技术社区  ›  John Little

Git是一种最安全的方法,可以实现类似于重新启动并消除本地更改的效果?

git
  •  0
  • John Little  · 技术社区  · 6 年前

    我签出了一家分行,例如mybranch/develop。 为了测试,我修改了一些文件(太多,无法用“get checkout”单独修复),并添加了一些文件(太多,无法手动删除)

    现在,我想获取mybranch/develop的最新版本,其他开发人员已经更改了该版本,但由于我想放弃的本地更改,当然不能。

    我没有犯过罪,没有上演过什么。

    我重新开始的方法是删除回购协议,克隆它,然后再次签出分支。

    然而,回购协议现在是5GB,而在我们的办公室里,我们只有5Mbit,所以需要几天的时间。我应该做的是在修改文件之前获取回购协议的本地副本,这样我就可以毫无风险地将其复制回去。

    我曾试图阅读有关重置的文档,但这需要一个人具备重要的心智能力来理解git复杂而详细的内部工作。

    我猜我需要做“git重置-硬”,但为了避免造成不可修复的损害,我想检查一下这不会破坏任何东西,这是“正确”的解决方案。

    类似于“git签出-忽略警告”或“git签出-强制”

    我看到有一个命令“git checkout-f BRANCH-NAME”

    那么我可以做“git checkout-f mybranch/develop”吗?

    如果是这样,为什么每个人都建议使用重置?

    好的,我试过“git checkout-f--”,但它不起作用。它确实消除了“修改文件”错误,但没有消除添加的文件。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Ofek Hod    6 年前

    git checkout -f mybranch/develop 无法工作,因为您尝试签出到当前所在的分支机构。
    正如你所说, git reset --hard 是轻松消除所有本地更改的推荐方法。
    如果您害怕运行导致删除内容的命令,您可以通过运行以下命令更安全地播放:

    git add -A
    git stash
    


    如果您对所做的事情感到后悔,并希望恢复该过程,只需运行 git stash pop

    https://www.atlassian.com/git/tutorials/saving-changes/git-stash

    顺便说一句,我不建议你在不控制这些基础的情况下使用git,花点时间深入一点,这是值得的。