gpt4 book ai didi

git - 快进、 merge 提交或 merge 到工作树,在这里选择哪个选项是正确的?

转载 作者:太空狗 更新时间:2023-10-29 12:45:35 26 4
gpt4 key购买 nike

我有一个包含两个分支 masterentidades 的 GIT 存储库。我需要将 entidades 分支中的一些内容 merge 到 master 分支。看一下图像,标记为 EntityBundle 的文件夹是我唯一需要从 entidades merge 到 master 的东西,我该怎么做?我在 SmartGit 的 entidades 分支上点击 merge 并收到类似图像显示的消息,但在这里我迷路了,因为我不知道什么是正确的选择,以免弄乱 master repo ,任何人都可以给我提示吗?

enter image description here

** 我的工具中的图表表示**

enter image description here

最佳答案

我假设你的历史看起来像这样:

* A (master, origin/master)
|
| * B (entidades, origin/entidades)
| |
< some number of commits on either branch>
| |
|/
* D

(较新的提交在该图的顶部,较旧的在底部)换句话说,entidades 一段时间前与 master 分道扬镳,你想在这些选项之间进行选择。您应该学习如何在您的工具中显示/查看此类图表:它们将帮助您了解当前的历史记录是什么样的,以及您对其所做的更改会做什么。 (这样的图可能会澄清你的问题。)

我还假设您正在将 entidades merge 到 master 中。 (您的屏幕截图似乎证实了这一点。)

现在,您的选择:

merge

merge 只是创建一个统一两个分支状态的提交。 (使它们相同。)看起来像这样:

* M (master)
|\
* | A (origin/master)
| |
| * B (entidades, origin/entidades)
| |
< some number of commits on either branch>
| |
|/
* D

然后,您可能会将 master 推送到 origin。通常,如果您完成了 entidades 的工作(例如,它是一个功能分支,并且该功能现在已 merge 到 master 中),您还可以在本地和远程删除该分支。

您的其他选项之一, merge 到工作树我认为,将执行 merge ,但不提交结果。如果这就是它的作用,那么如果您执行 git commit,您将最终到达与 Create Merge Commit 完全相同的点;前一个选项只是让您有机会编辑提交。

rebase

entidades rebase 到 master 看起来像这样:

* B´ (entidades)
|
< the commits made to entidades >
|
* A (master, origin/master)
|
| * B (origin/entidades)
| |
< some number of commits on either branch>
| |
|/
* D

正如我所展示的,entidades 最初是“基于”提交 D,因为那是它与 master 不同的地方;您所做的更改是“基于”这一点的。 rebase 会将其更改为基于提交 A。我们已经更改了分支的“基础”或“重新设置”它。

rebase 改变历史。你可以在这里看到这一点,因为 entidadesorigin/entidades 有 < em>diverged:他们都有自己独特的提交。 entidades 有提交 D..B´,而 origin/entidades 有提交 D..B

如果您还没有 push 分支,那么 rebase 通常是“社会可接受的”,因为那时您是唯一可以说历史已经改变的人。但是,一旦您将更改推送到某个远程,其他人可能会根据原始 entidades 进行更改:他们注意到您的历史重写。因此,推荐的建议是不要对已推送的内容进行 rebase ,因为这会弄乱人们。 (任何对 entidades 进行更改或分支的人都需要重新设置他们的更改,这对他们来说可能是一个乏味或繁重的过程。)

为了将新的 entidades 推送到 origin,您需要 git push -f。 (-f 表示“强制”;您需要强制执行它,因为您正在重写历史,出于上述原因,这通常是您应该小心处理的事情。)

请注意,entidades 仍未 merge 到 master 中;但是,如果它现在基于 master 本身(最新提交,而不是某个祖先),那么您可以快进 masterentidades。是否愿意取决于您。

关于git - 快进、 merge 提交或 merge 到工作树,在这里选择哪个选项是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24684410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com