【问题标题】:merging branches in after many wrong commits在多次错误提交后合并分支
【发布时间】:2015-04-16 19:25:03
【问题描述】:

我是 .git 的新手,我将它与 Sourcetree/Bitbucket 一起使用。我暂时不需要分享我的代码,而只是为了跟踪我的项目并允许我撤消或恢复到旧版本。 我已经阅读了很多指南,但对我来说仍然有点神秘。

我想使用它的方式是每次我需要添加新功能时从 master 创建一个分支。我想继续提交那个分支,当它最终可以工作时,我想将它合并回主分支,然后继续下一个特性。 也许还有更好的使用方法,我愿意接受建议。

我最终遇到了这种情况,因为我必须快速发布一个新版本,而我没有时间修复存储库。后期修复它的尝试导致了更多的混乱。也许是时候寻求帮助了;)

这是我应该做的: - 在 29 代,我想创建一个新分支“transmitter_fo_nrf24l01+” - 继续提交该分支直到 2 月 5 日 - 2 月 6 日,创建一个新分支(来自 master)“add_serial_interface”(我想我在这里失败了)。 - 2 月 12 日版本再次与 master 合并。 - 为新功能创建一个新分支(来自 master)

今天我无法将 added_serial_interface 合并到 master 因为与 2 月 5 日添加的 README 文件冲突,最后的尝试导致了那个孤独的头......

我现在如何合并 master 分支中的所有内容?我无法解决冲突。 我不太关心修复所有历史记录,但我想至少现在开始“清理”新功能,并了解我的错误是什么。 谢谢!

PS 抱歉,图片太小了,用浏览器放大就可以看到真实大小

【问题讨论】:

  • 如果你想认真对待这个问题,我建议你看看 Git-flow,它是一个用于处理发布和功能分支的模型。请参阅此处 (nvie.com/posts/a-successful-git-branching-model) 和此处 (atlassian.com/git/tutorials/comparing-workflows/…) 的说明
  • 谢谢你,清晰而鼓舞人心的阅读(尤其是第一个)。我仍然是初学者,但随着项目的发展,它变得越来越有用。
  • 不客气。如果您无论如何都要对流程进行更改,我建议采用一种经过验证的方法,例如Git 流。它运行良好,具有工具和大量支持信息。 Atlassian 页面上还提到了一些其他(类似)方法(参见上面的链接)。

标签: git merge bitbucket atlassian-sourcetree


【解决方案1】:

为您正在处理的不同功能设置单独的分支是一种很好的做法。如果您在并行分支中独立编辑同一个文件,事情只会变得复杂(在您的情况下,master 中的 README added_serial_interface 中的一样)。如果您需要处理相同的文件,单独的分支会使事情变得困难。 Git 通常会自动合并,但在不同分支中编辑相同的文件时,您将不得不进行一些手动合并。

一般来说,我会避免在不同的分支中编辑同一个文件。如果必须,请尝试首先将第一个分支的更改合并到第二个分支中,然后再对第二个分支中的该文件进行更改。 (您已更改 master 中的 README。如果您在编辑 README 之前将该更改从 master 合并到您的其他分支中,则合并将不会发生冲突)

要恢复您的情况,您需要进行一些手动合并。根据您的操作系统,有一些工具可以通过并排显示文件的两个冲突版本并突出显示差异来帮助您合并。 (也许你使用的 git 客户端已经内置了)。手动将文件编辑为最终版本后,您必须提交它以完成合并。 您也可以简单地告诉 git 使用其中一个分支的版本并忽略其他更改。

查看 Git 文档:http://www.git-scm.com/docs/git-merge(“如何解决冲突”和“合并策略”)。一开始看起来很复杂,但学习 git 绝对值得。

【讨论】:

  • 谢谢,最后我通过更改主提交中的自述文件来做到这一点。我需要多学习一点;)
猜你喜欢
  • 1970-01-01
  • 2012-08-31
  • 2021-08-12
  • 2017-04-26
  • 2018-06-14
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多