代码之家  ›  专栏  ›  技术社区  ›  Robo Robok

为什么我不能用不相关的本地更改来拉git?

  •  1
  • Robo Robok  · 技术社区  · 7 年前

    在git中,您不能这样做 git pull 如果有任何未提交的修改,请给出以下错误:

    错误:无法使用重基进行拉取:您有未老化的更改。

    错误:请提交或隐藏它们。

    git stash 每次我想要拉取时,即使我的更改与拉取的文件无关。

    如果我的更改与拉取的更改不冲突,是否有允许拉取的解决方法?我真的不明白,如果拉力不会破坏任何东西,为什么它不起作用。如果这是一个安全问题,那么为什么它适用于新文件?从理论上讲,pull可以引入相同路径的新文件。

    有什么办法可以让它更简单吗?

    2 回复  |  直到 5 年前
        1
  •  3
  •   Mureinik    7 年前

    你可以用 git pull --rebase --autostash . 这本质上是隐藏本地更改,从远程获取,在其上重新设置基址,并在一个命令中弹出隐藏。

    注意:您还可以将这些标志配置为默认行为:

    $ git config pull.rebase true
    $ git config rebase.autoStash true
    

    但是,强大的力量带来巨大的责任,只有在你绝对肯定自己在做什么的情况下才使用这个选项。

        2
  •  2
  •   Mark Adelsberger    7 年前

    pull 行为-“获取和合并”-您可以进行本地更改和 只要要合并的更改不会影响与本地更改相同的文件,则仍然可以工作。

    但是在做 rebase ,这可能是您认为用户不应该关心的。但不管是什么情况,这都是git的行为。

    如果你真的想让这是自动的,你可以使用自动隐藏。最简单的方法就是说

    git pull --autostash
    

    如果您希望它更加自动化,可以设置 rebase.autostash true . 但是,这会使autostashing成为的默认设置 全部的 在配置值范围内(即在回购协议内,或在您的机器上,如果您使用 --global 选项)。这意味着当您使用脏工作树重新设置基址时,您将尝试重新设置基址(并且可能很难解决冲突)。 autostash 被视为“小心使用”选项,因此我不建议将其配置为默认值。

    就这点而言,即使你只是使用 --autostash 争论 autostash 最重要的是。

    推荐文章