问题标签 [merge-base]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1962 浏览

git - git merge-base 不在合并的分支上工作

我试图通过git merge-base合并分支上的命令来获取我分支的祖先。

当我尝试git merge-base develop branch1它显示 sha YYY而不是XXX

当我在未合并的分支上触发相同的命令时,一切正常(下图)

我获得此提交 id 的唯一方法是 git log --oneline --boundary develop...branch1 它向我显示了提交列表,但我只需要一个。

0 投票
2 回答
553 浏览

git - Git: how to update branch made by merge-base

Suppose that I have 2 branches: v1.0 and development. Our process is to create local branch using:

Suppose that one of my colleagues follows the same process and made changes recently by:

My question is, how can I easily update my local branch with his recent changes?

What I did, was to create another branch with recent changes using merge-base and merge it with my changes made locally.

But do it exist some easy way? I was thinking about something like git merge <last-commit-hash> but it generates lots of conflicts.

0 投票
1 回答
1226 浏览

git - 检查分支是否已经合并到远程的 master 或 dev 分支

我要做的是确保我可以安全地删除本地分支。

我在这里找到了这个问题的一些很好的答案:

我如何在 git 中知道一个分支是否已经合并到 master 中?

所以我们有源分支和目标分支。源分支是可能已经完全合并到目标分支的分支。

上述链接中答案的问题在于,如果目标分支在与源分支合并后有新的提交,则答案似乎不起作用。

我有这个运行良好的脚本,但它似乎只有在所有分支共享相同的提示或其他情况下才有效。不过,该脚本在理论上是有效的,因为您只是想查看本地分支的尖端是否作为提交包含在远程分支历史的某个地方,所以应该不难弄清楚。

有谁知道如果目标分支在与源分支合并后获得新的提交,为什么它不起作用?

0 投票
2 回答
3987 浏览

git - “git merge --squash”的正确用例是什么?

有人喜欢git merge --squash的原因如下:

压缩到单个提交使您有机会清理混乱的 WIP 提交,并为您正在合并的更改提供一个很好的理由。

https://coderwall.com/p/qkrmjq/git-merge-squash

但是,我认为有一些缺点超过了制作干净历史的优点。

  1. git merge --squash产生一个非合并提交。因此,Git 不会将您要合并的提交识别为合并基础。git merge --squash当 1) 在分支 X 上将 A 更改为 B,2)从分支 X 到分支 Y,以及 3) 在分支 X 上将 B 更改为 A(还原),以及 4) 将 X 合并到 Y 时,这会导致不需要的合并结果在此处输入图像描述 。 4,在分支 Y 上,从 A 到 B 的更改未恢复。这里,这是 3 路合并,因此比较从分支 X 到合并基础的差异和从分支 Y 到合并基础的另一个差异。前者包括没有变化,后者包括从A到B的变化,所以合并结果包括从A到B的变化。

  2. 提交作者被覆盖,这会丢弃贡献。git merge --squash生成一个名为 who did 的新提交git merge --squash。当然,提交内容来自原始提交。这听起来像是在窃取贡献。这成为https://github.com/Microsoft/winfile/pull/42#issuecomment-380681627中的一个问题

什么是正确的用例git merge --squash

0 投票
1 回答
138 浏览

git - Git merge-base 在构建服务器克隆的 repo 上没有产生任何结果

我有以下 git 分支场景:

当我在本地存储库上发出命令git merge-base dev HEAD时,它会返回 D0 的提交 SHA。

在我们的构建服务器上,它是 GitLab 管道 CI/CD 的 GitLab Runner,它会在触发构建时克隆存储库。由于某种原因,我无法弄清楚服务器上的相同命令什么都不返回。

知道问题是什么或我缺少什么吗?

0 投票
1 回答
72 浏览

git - 在 git-merge 中使用 vimdiff,如何显示提交 ID?

我正在做一个导致合并冲突的樱桃选择,当我解决它时,默认的合并工具 Vimdiff 被打开。有 4 个窗格,顶部是 Local 、 base 和 remote。但是我注意到基础没有我希望看到的文件版本是否在本地和远程提交之间进行了 git merge-base 。这是 git/vimdiff 中的缺陷吗?我如何才能看到基本窗格中显示了哪个提交?

0 投票
1 回答
40 浏览

git - 查找两个分支之间的所有合并事件

我正在尝试确定将 master 合并到特定发布分支的频率。所以,我想知道所有合并基地的历史。有没有办法列出两个分支之间发生的所有合并?