【问题标题】:How to merge changes from a commit below certain line?如何合并来自某行以下提交的更改?
【发布时间】:2020-07-06 12:14:02
【问题描述】:

我知道您可以从某个提交中合并/挑选更改,但是有没有办法从提交中合并/挑选更改,但只能在代码中的某一行以下,例如:merge/cherry-pick changes from提交 25gh4q1 但仅在第 202 行以下?

【问题讨论】:

  • 不,你不能使用 git 合并文件的一部分。
  • @evolutionxbox 我想我已经设法找到了答案,虽然没有完全按照我的要求做,但实现了同样的目标。

标签: git git-merge git-cherry-pick


【解决方案1】:

它不是单行的,但你可以这样做:

git cherry-pick 25gh4q1
git reset --mixed HEAD~
git add -p
<interactively stage only relevant parts of the file>
git commit
git reset --hard

解释:

git cherry-pick 25gh4q1 - 挑选整个提交,包括不需要的东西

git reset --mixed HEAD~ - 保持文件在提交25gh4q1 中的更改,但它们现在将显示为“更改未暂存以进行提交”

git add -p - 这允许以交互方式仅对部分更改进行暂存,而不是全部更改,包括部分文件; -p 代表patch

git commit - 提交分阶段的更改

git reset --hard - 清理提交 25gh4q1 中没有被暂存或提交的不需要的部分

【讨论】:

  • 我认为git checkout --patch 可能会实现同样的目标。
【解决方案2】:
git checkout --patch <commit-tag-from-any-branch>

这将进入补丁模式,我们将能够看到提交被划分为块(在 git 中,代码块被称为块 - 请参阅In the context of git (and diff), what is a "hunk" 了解更多详细信息),我们将看到选项对提交的大块进行操作,例如:将它们添加到索引、删除、在大块之间移动等等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 2019-09-14
    • 2016-09-09
    • 2015-05-04
    • 2012-11-26
    • 1970-01-01
    • 2018-11-18
    • 2013-01-12
    相关资源
    最近更新 更多