关于git:Android Studio更新项目:Merge vs Rebase vs Branch Default

Android Studio Update Project: Merge vs Rebase vs Branch Default

抱歉,如果这看起来是多余的,因为我知道有相当多的问题关于合并和重新平衡,但似乎没有任何抛出'分行违约'以及。

你会遇到这样一个情况:你有多个人同时在做某件事情(即Android Studio中的Android应用程序)。如果有人推到主分支,并且您希望拉入新的主分支,这样它就不会覆盖您仍在处理的工作,并且尚未提交并推到主分支,那么更新项目/拉取的最佳选项是什么?Android Studio在单击"更新项目"时会列出"合并""重新平衡"和"分支默认值"。听上去,我想做"重新平衡"(后面跟着"合并")?但我不完全确定。


藏匿

这里的关键是您有未提交的要保存的工作。在尝试合并中的任何内容之前,应先存储更改以保存未提交的更改并清理工作目录。

运行git stash来保存您的更改。然后您应该能够在没有任何问题的情况下完成更改。

成功拉取之后,可以执行git stash apply以重新应用拉取之前所做的更改。

合并和再平衡

仅当您只有未提交的更改时,才可以保存更改。如果在某个时刻你承诺了但没有推动你将需要重新平衡或合并。

这个stackoverflow帖子有一些关于区别的重要信息。

一般来说,合并更容易,但一些人认为它"污染"了带有合并提交的Git历史。

重新平衡需要额外的工作,但是由于您没有合并提交,它基本上将使合并不可见。

同样,在您的情况下,您不需要合并或重新平衡。简单的藏起来,拉,然后应用藏起来,它应该都是好的。


enter image description here

根据Intellij理念文档:

更新类型

  • 合并:选择此选项以应用合并策略。结果与运行git fetch ; git mergegit pull --no-rebase的结果一致。
  • REBASE:选择此选项以应用REBASE策略。结果与运行git fetch ; git rebasegit pull --rebase的结果一致。
  • 分支默认值:选择此选项可应用分支的默认命令。默认命令在.git/config配置文件的branch.部分中指定。

更新前清理工作树

在此区域中,指定在更新前清理工作树时保存更改的方法。更新完成后将还原更改。可用选项包括:

  • 使用stash:选择此选项将更改保存在Git中藏起来,这样你就可以应用贴片,即使在外面也可以改变藏起来的东西。Intellij理念,因为它们是由Git本身生成的。使用
  • 搁置:选择此选项可将更改保存在工具架上。搁置是Intellij IDEA内部操作,生成修补程序来自搁置的更改通常在Intellij中应用(取消搁置)想法。也可以在Intellij思想之外应用搁置的更改但需要额外的步骤。


我在谷歌的任何文档中都找不到这个问题的答案(即工作流程)。下面是我在使用Android Studio和Git时的实际经验。

(一想到命令行和IDE之间的切换,我就呕吐——这意味着缺少IDE!)

  • 用鼠标右键单击Project->Git->Repository->Stash Changes来存储更改。给它起个名字。
  • 拉您的同事所做的更新:右键单击Project->Git->Repository->Pull
  • 将代码更改合并回:右键单击项目->Git->Repository->Unstash Changes->Apply Stash
  • 然后,您将看到一个"文件与冲突合并"的用户界面。这是您选择文件并有选择地合并的地方。
  • 警告

    手动合并"合并修订"用户界面很糟糕。一旦你尝试了,你就会明白我的意思。祝你"同步滚动"工作顺利。我真诚地希望这个用户界面能在2015年的头几个星期内解决。


    根据文件:

    Merge: select this option to perform merge during the update. This is equivalent to running
    git fetch and then git merge, or git pull --no-rebase.

    Rebase: select this option to perform rebase during the update. This is equivalent to running
    git fetch and then git rebase, or `git pull --rebase (all local commits will be put on top of the updated upstream head).

    Branch Default: select this option if you want to apply different update strategies for different branches. You can specify the default update type for each branch in the branch. section of the .git/config configuration file.

    在此处阅读更多信息