【问题标题】:github/egit/git: compare master with an earlier commit and merge selected changes into a new branch. how?github/egit/git:将 master 与较早的提交进行比较,并将选定的更改合并到一个新的分支中。如何?
【发布时间】:2012-09-22 13:39:43
【问题描述】:

希望

我是唯一的开发人员(也是初学者)。我目前只有一个主分支。在其中,我有一些具有不同实现类型的真正不同版本的提交。所以,我想把它们变成新的分支。但是我在主分支中也有一些功能,我想合并到这些新分支中。这些功能是次要的,我希望准确地查看和选择更改。

尝试过

在 Egit 中,如果我创建一个新分支,主文件将在本地删除。所以,我不明白如何比较版本。我可以在本地开设多个分支机构吗?这是可取的吗?怎么样?

如果我要求将我的 master 合并到我的新分支中,Egit 会快进显示没有冲突或比较,这不是我想要的。

请求

什么是实现我想要的结果的好过程?如有必要,我很乐意将 Egit 与 GitBash 混合(假设它们可以毫无问题地混合)。

背景

很多类似的讨论(例如herehere)或相关教程(例如here)但没有精确匹配。

谢谢!

【问题讨论】:

    标签: git github merge egit git-merge


    【解决方案1】:

    你需要的是一个叫做cherry-picking的设施。

    如果你安装了 Git:

    1. 创建一个分支
    2. 使用gitk --all 命令,它会显示一个关于您拥有的所有分支提交的漂亮 GUI。
    3. 您可以轻松选择所需的提交,只需右键单击它并选择“Cherry-pick this commit”

    就是这样。

    【讨论】:

    • 谢谢。实际上,我需要做的是从几个提交中选择更改。因此,我需要并排显示更改并半手动集成。也许我只能用手来做……但我希望听到正确的方法是什么……
    • 嗯,不确定我是否正确理解您的需求,但here's a screenshot about gitk:它确实并排显示更改。它会自动进行挑选,您只需选择所需的提交并将其合并到当前分支。您还可以通过手动运行git-cherry-pick 来完全自动化任务,但您需要提交 SHA。 HTH。
    • 作为初学者,我不太确定自己的最终需求。我看到 gitk 非常有用,所以 - 再次感谢。几个问题:1)一旦我在 gitk 中显示了差异,如果它们与提交不一致,我如何合并或手动传输源代码更改? 2)如果我使用gitk、gitgui或gitbash操作,eclipse/egit能跟得上吗?例如,什么是签出、合并等...?
    • 哦,所以你想合并差异,而不是整个提交?好吧,它可以完成,但它远非微不足道,我不建议这样做:你必须重写历史记录和 [git-scm.com/book/en/Git-Tools-Rewriting-History](split 提交)。 2)EGit可以跟得上,别忘了刷新项目(F5),旧版本的Eclipse可能需要它。
    • 我明白了。再次感谢。这方便地指向进一步的学习并指示预期的内容。很有用。直到下一次......
    猜你喜欢
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 2021-01-19
    相关资源
    最近更新 更多