ChatGPT解决这个技术问题 Extra ChatGPT

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

如果这似乎是多余的,我深表歉意,因为我知道关于 Merge vs Rebase 有很多问题,但似乎也没有任何关于“Branch Default”的问题。

给你一个案例,你有多个人同时在做某事(即 Android Studio 中的一个 Android 应用程序)。如果有人推送到主分支并且您想要拉入新的主分支,那么更新项目/拉取的最佳选择是什么,这样它就不会覆盖您仍在处理但尚未提交并推送到主分支的工作?单击“更新项目”时,Android Studio 会列出“合并”、“变基”和“分支默认值”。听起来,我想做'Rebase'(然后是'Merge'?),但我不完全确定。

您的所有更改是否都未提交,或者您是否有一些您之前已提交但未推送的更改?
用户正在进行的所有更改都未提交;任何提交都会立即被推送。
this

C
Community

藏匿

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

运行 git stash 以存储您的更改。然后,您应该能够毫无问题地提取更改。

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

合并和变基

仅当您只有未提交的更改时,才可以隐藏更改。如果在某个时候您提交但没有推送,您将需要变基或合并。

This StackOverflow post 提供了一些关于差异的重要信息。

一般来说,合并更容易,但有些人认为它通过合并提交“污染”了 git 历史。

变基需要额外的工作,但由于您没有合并提交,它本质上会使合并不可见。

同样,在您的情况下,您不需要合并或变基。简单地藏起来,拉,然后应用藏起来,一切都应该很好。


我想让这个尽可能简单(即只需要打开 Android Studio IDE) 有没有不涉及使用 Git Bash 并且只使用 Android Studio 的解决方案?
没关系,重读,似乎根据您的回答,如果我只想使用 AS,我想在拉动时选择“合并”
我写了一个新行://test,提交并推送它,确认它已推送到 master,在本地删除 //test 行并尝试使用 Merge and Branch 默认值“更新项目”,但该行没有返回。不知道为什么它没有从 master 中拉出 //test 行。 :X
IntelliJ(和 Android Studio)do have a stash option- 它在 VCS 下 >吉特>存储更改。
i
informatik01

https://i.stack.imgur.com/HaaFt.png

根据 IntelliJ IDEA documentation

更新类型

合并:选择此选项以应用合并策略。结果与运行 git fetch 的结果相同; git merge 或 git pull --no-rebase。

变基:选择此选项以应用变基策略。结果与运行 git fetch 的结果相同; git rebase 或 git pull --rebase。

分支默认值:选择此选项以应用分支的默认命令。默认命令在 .git/config 配置文件的 branch. 部分中指定。

更新前清理工作树

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

使用 Stash:选择此选项可将更改保存在 Git stash 中,因此即使在 IntelliJ IDEA 之外,您也可以应用已更改的 stashed 补丁,因为它们是由 Git 本身生成的。

使用搁架:选择此选项可将更改保存在搁架上。搁置是 IntelliJ IDEA 的内部操作,由搁置的更改生成的补丁通常在 IntelliJ IDEA 内部应用(未搁置)。在 IntelliJ IDEA 之外应用搁置的更改也是可能的,但需要额外的步骤。


@MikeW 这取决于你.git/config
如果我勾选“以后不再显示此对话框”,如何重新打开
a
admdrew

我在 Google 的任何文档中都找不到这个问题的答案(即工作流程)……所以这是我完全从 UI 中使用 Android Studio 和 Git 的实践经验。

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

存储更改:右键单击项目 -> Git -> 存储库 -> 存储更改。给它一个名字。拉取您同事使用的更新:右键单击项目 -> Git -> 存储库 -> 拉取合并您的代码更改:右键单击项目 -> Git -> 存储库 -> UnStash Changes -> Apply Stash 然后您将看到“与冲突合并的文件”用户界面。这是您选择文件并有选择地合并的地方。

警告

手动合并“合并修订”用户界面非常糟糕。一旦你尝试它,你就会明白我的意思。祝“同步滚动”真正起作用。我真诚地希望这个 UI 在 2015 年的最初几周内得到解决。


y
yoAlex5

根据documentation

合并:选择此选项可在更新期间执行合并。这相当于运行 git fetch 然后运行 git merge 或 git pull --no-rebase。变基:选择此选项可在更新期间执行变基。这相当于运行 git fetch 然后运行 git rebase 或 `git pull --rebase (所有本地提交都将放在更新的上游头部之上)。分支默认:如果您想为不同的分支应用不同的更新策略,请选择此选项。您可以在 .git/config 配置文件的 branch. 部分中为每个分支指定默认更新类型。

[Merge vs Rebase]

阅读更多here


C
CoolMind

对于那些在 Android Studio 中寻找 rebase 的人。

VCS > Git > 变基。

https://i.stack.imgur.com/UjjKP.png

https://i.stack.imgur.com/xA12N.png

然后单击“变基”、“开始变基”、“合并”。要简化流程,请单击“全部”以解决不冲突的更改。

https://i.stack.imgur.com/Prtm0.png

可能存在冲突的更改,请解决它们,直到您收到消息:

https://i.stack.imgur.com/sNPom.png

如果您遇到这些冲突,请单击左箭头或右箭头接受最合适的:

https://i.stack.imgur.com/HwntD.png

单击交叉以忽略不必要的更改或箭头以接受:

https://i.stack.imgur.com/PmSky.png

如果您接受这两项更改,您还可以编辑生成的代码,例如,在方法中添加缺少的 }

这样做直到所有冲突都得到解决:

https://i.stack.imgur.com/xuOTc.png

点击“应用”。当一个提交中的所有文件都是最新的时,单击“继续变基”以移动到下一个提交。


D
Deepak Ror

使用 android studio 终端更新 Git 项目

混帐添加。 git commit -m "anything" git push origin master

这就是我想从您的帖子中找到答案的原因。所以这就是我写这个答案的原因。