【问题标题】:Command line equivalent of IntelliJ IDEA "VCS → Update Project" with Git命令行相当于 IntelliJ IDEA“VCS → 更新项目”与 Git
【发布时间】:2014-09-08 22:37:14
【问题描述】:

在 IntelliJ IDEA 13 中,VCS 菜单包含 Update Project 选项。使用 Git 时,会弹出以下对话框:

我发现 UpdateType="Rebase" 和 Clean="Stash" 选项非常适合我的工作流程。现在我需要命令行上的等效项,以便在 IDEA 之外使用。

我知道只有第一部分是:

git pull --rebase

但是如何将它与 Clean 选项结合使用?

IDEA 选项还可以完美结合分阶段和非分阶段的更改。它们完全按原样恢复。这让我觉得除了简单的git stash之外还有更多的事情发生。


旁注:当我在 IDEA 中调用该选项时,我看到此消息被打印到版本控制控制台,但我无法弄清楚它与所选选项的关系。

git fetch origin --progress --prune

【问题讨论】:

    标签: git intellij-idea


    【解决方案1】:

    不能在单个命令中完成。需要三个:

    git stash && git pull --rebase && git stash pop
    

    意思...“创建一个存储,如果成功,执行 pull --rebase,如果成功,将存储应用回工作树并删除它”。

    如果 pull --rebase 失败,则不会应用隐藏,但会保持隐藏状态(在修复导致 pull 失败的任何原因后准备好 git stash pop)。

    如果您想重新暂存以前暂存的更改:

    git stash && git pull --rebase && git stash pop --index
    

    如果您还想存储未跟踪的文件:

    git stash --include-untracked && git pull --rebase && git stash pop
    

    git stash --include-untracked && git pull --rebase && git stash pop --index
    

    如果您还想重新暂存以前暂存的更改。

    【讨论】:

    • 谢谢!你知道为什么 IDEA 会做整个fetch --prune 的事情吗?这就是让我质疑显而易见的事情的原因。
    • fetch --prune 表示删除任何正在跟踪远程分支的分支,这些分支不再存在于远程。 git pull 首先进行 fetch,但不允许您传递 --prune 选项,所以我猜 IDEA 会明确地使用 fetch 来进行修剪。
    • git fetch <remote> --prune 将获取远程,并删除远程上已消失的分支的任何远程跟踪分支。它与您的工作副本发生的事情没有任何关系,仅与它如何管理名为 refs/remotes/<remote>/<branch> 的分支有关。
    • 如果有未分阶段的更改,此答案将不起作用。即使混合了分阶段和非分阶段的更改,IDEA 也能正常工作 - 一切都按原样恢复。我认为我们在这里仍然缺少一些魔力。
    • 如果您的意思是它不会重新暂存您预先暂存的更改,您可以使用--index 选项到git stash pop 重新暂存它们。我会更新答案。
    猜你喜欢
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 2010-10-19
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多