问题标签 [git-merge]

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 投票
10 回答
426195 浏览

git - 如何挑选一系列提交并将它们合并到另一个分支中?

我有以下存储库布局:

  • 主分支(生产)
  • 一体化
  • 在职的

我想要实现的是从工作分支中挑选一系列提交并将其合并到集成分支中。我对 git 很陌生,我无法弄清楚如何在不弄乱存储库的情况下准确地做到这一点(在一个操作中挑选提交范围,而不是合并)。对此有任何指示或想法吗?谢谢!

0 投票
1 回答
259 浏览

git - 合并两个相同的 git-svn 分支 HEAD 而不会丢失与 git-svn 远程分支的链接?

我有一对 git-svn 分支,它们通过应用补丁等手动保持同步;git-merge尚未使用。分支现在是同步的,也就是说git diff A B根本没有输出。

如何让 git 将两个分支视为合并,以便未来git merge将使用今天的 HEAD 作为合并基础,而不会丢失 git-svn 与 SVN 的关联?

我试过的

  1. git checkout A; git merge B

    这会选择 SVN 分支点作为合并基础,然后尝试解决多年来手动完成的重复交叉合并。

(此列表预计会增长)

0 投票
2 回答
23667 浏览

git - 如何推/拉 Git rebase

我想使用git rebase以便干净地合并主分支中的功能(在较少的提交中或至少在更改日志的顶部)。请注意,我是唯一一个在存储库上工作的人

在阅读了 Git 工作流和变基与合并问题之后,我发现git rebase这会非常好,就像 Micah 一样,我想重新git push基基更改只是因为我正在从不同的地方处理它们(例如:我的笔记本、我的家、某处的另一台 PC。 ..)

所以这里有两个解决方案(双向丑陋合并):

  1. 在其他机器上使用git push -f推送,然后拉取,但是如何在其他机器上干净地获取最新版本?
  2. 使用合并将主更改合并到功能分支,git push/pull,一旦成熟,做一个单一的变基(在一个或多个提交中干净地)

(2) 如下所示:

您认为哪种解决方案可行?到目前为止,我还没有尝试过其中任何一个(主要是因为害怕让我的日志更加混乱)。

0 投票
1 回答
843 浏览

git - 奇怪的 git 合并问题

这是 gitk 目前在我们的一个项目中的样子:

https://dl.dropbox.com/u/2582508/gitk.png

显然,据我们所知,这发生在使用远程分支完成单个“git merge”之后 - 我们不确定为什么或发生了什么。知道这里发生了什么吗?

更重要的是,修复它的最佳方法是什么?这些合并提交是空的,但是在执行“git rebase -i”时,合并提交通常似乎不会出现。

最重要的是,我不想让历史与其他克隆不兼容,即他们应该仍然能够拉/推/合并它。这甚至可能吗?

0 投票
5 回答
82012 浏览

git - git:合并两个分支:什么方向?

我们有以下情况:

在 last-working 和 iPhone 之间,进行了 32 次提交。在 last-working 和 master 之间,进行了很多提交。

我现在想要的是一个新的分支,我将 iphone 和当前的 master 合并在一起。并且在稍后的某个时间,这应该被合并到主控中。

首先,我打算这样做:

但后来我想,如果这样做会更好:

现在我想知道。结果会有什么不同?合并的行为会有所不同吗?

我已经尝试了这两种方法,正如我所料,我遇到了很多冲突,因为与 master 相比,iphone 真的很旧。现在我想知道合并它们的最简单方法。

也许甚至从 master 开始并将每个 iphone 提交合并到它会更容易?像这样做:


最后,当这个合并完成时(即所有冲突都已解决并且它正在工作),我想这样做:

0 投票
33 回答
2763577 浏览

git - 撤消尚未推送的 Git 合并

在我的 master 分支中,我在git merge some-other-branch本地做了一个,但从未将更改推送到 origin master。我不是要合并,所以我想撤消它。在git status合并后进行操作时,我收到了以下消息:

根据我找到的一些说明,我尝试运行

但现在我收到这条消息git status

我不希望我的分支领先于任何数量的提交。我如何回到那个点?

0 投票
2 回答
2802 浏览

git - 本地克隆未知的 Git 分支

我有一个带有两个分支的 git 存储库。如果我克隆我的仓库,我只能看到主分支。我的两个分支都是最新的。问题是我不完全理解合并和分支。该死!

我的例子可以在这里看到:

http://github.com/rimian/rimian/network

谁能告诉我如何让它恢复正常?

0 投票
12 回答
435804 浏览

git - 解决合并冲突后如何完成合并?

我已经阅读了Git Community Book 的Basic Branching and Merging部分。

所以我遵循它并创建一个分支:experimental.

然后我:

  1. 切换到实验分支(git checkout experimental)
  2. 做一堆改变
  3. 提交它(git commit -a)
  4. 切换到主分支(git checkout master)
  5. 进行一些更改并在那里提交
  6. 切换回实验(git checkout 实验)
  7. 将主更改合并到实验(git merge master)
  8. 有一些冲突,但在我解决它们之后,我做了'git add myfile'

  9. 现在我被卡住了,我无法回到主人身边

当我做

我做到了:

没有正在进行的变基?

我做到了:

我该怎么做才能回到我的主分支?

0 投票
3 回答
4719 浏览

git - 通过 Git 使用 Vimdiff 时如何获取 bufspec

我已经阅读了 VimdiffViewing Differences with Vimdiff以及使用“vimdiff multiple”、“vimdiff git”、“vimdiff commands”等内容进行各种谷歌搜索。

使用 do 或 diffg 时,我收到错误“在 diff 模式下有两个以上的缓冲区,不知道要使用哪一个”。

使用 diffg v:fname_in 时,我得到“v:fname_in 没有匹配的缓冲区”。

从 vimdiff 文档:

:[range]diffg[et] [bufspec]
修改当前缓冲区以撤销与另一个缓冲区的差异。如果给出 [bufspec],则使用该缓冲区。如果 [bufspec] 指的是当前缓冲区,那么什么也不会发生。否则,这只适用于在差异模式下存在另一个缓冲区的情况。

和更多:

当 'diffexpr' 不为空时,Vim 求值以获得上述格式的 diff 文件。这些变量设置为使用的文件名:

v:fname_in 原始文件
v:fname_new 相同文件的新版本
v:fname_out 产生的差异文件

因此,我需要获取 bufspec 的名称,但未设置默认变量(fname_in、fname_new 和 fname_out)。

我通过终端在 linux 机器上运行了命令 git mergetool 。

[编辑] 产生更多问题的部分解决方案。我在缓冲区底部使用了“文件名”。这只是一半的答案,因为偶尔我会收到文件不存在错误。我相信它始终是“不存在”的文件的远程版本。我怀疑这与 git 和索引有关。

在通过 git-mergetool 使用 vimdiff 时,如何始终如一地获得 bufspec 值?

0 投票
2 回答
1172 浏览

java - TeamCity 和待处理的 Git 合并分支提交通过失败的测试继续构建

我们使用 TeamCity 进行持续集成,使用 Git 进行源代码控制。一般来说,它工作得很好——方便、现代和良好的我们在测试失败时的快速反馈。

有一个与 Git 合并细节相关的奇怪行为。以下是案例的步骤:

  1. 第一个开发人员从主仓库中提取。
  2. 第二个开发人员从主仓库中提取。
  3. 第一个开发人员在本地提交 A。
  4. 第二个开发者在本地提交 B;
  5. 第二个开发者推送提交 B。
  6. 第一个开发人员想要推送提交 A 但不能,因为他必须先拉提交 B。
  7. 第一个开发人员从远程存储库中提取。
  8. 第一个开发人员推送提交 A 并生成合并分支提交。

主仓库中的提交历史如下:

  • B二级显影剂
  • 第一个开发者
  • 合并分支第一个开发者。

现在让我们假设 Second Developer 在他的提交 B 中修复了一些失败的测试。

TeamCity 将做的事情如下:

  1. 提交 B 到达 - TeamCity 构建 #1,所有测试均通过
  2. 提交 A 到达 - TeamCity 使构建 #2(没有提交 B)测试栏变为红色!

  3. TeamCity 认为 Pending “Merge Branch” 提交不包含任何更改(任何新文件) - 但它实际上包含提交 B 的合并,因此 TeamCity 不想在此处进行新构建并使测试变为绿色。

这里有两个问题: 1. 在我们的例子中,我们在第二次提交(提交 A)中返回失败的测试 2. TeamCity 不想进行新的构建并使测试返回绿色。

有谁知道如何解决这两个问题。

我考虑了一些合理的一般方法。