【问题标题】:How to cherry-pick a commit and only apply to certain files? [duplicate]如何挑选提交并仅适用于某些文件? [复制]
【发布时间】:2020-09-24 19:42:16
【问题描述】:

假设我有两个 git 分支:

  1. 带有文件 1 和 2 的分支 a
  2. 使用文件 2 分支 b

我在分支 a 中有一个提交,它修改了文件 1 和 2。 我结帐分支b 试图挑选这个提交,但我只想要更改文件2 的提交部分(因为分支b 没有文件1)。

这怎么可能?

【问题讨论】:

  • 分支没有“拥有”文件。分支,即使是一个东西,也有提交。每个提交都有 all 文件。在您进行某个提交时,您可能只更改了某个文件,但该提交包含所有文件。它是事物创建时整个状态的快照。
  • @matt - 或者,一个分支上的提交有一个文件,而另一个分支上的提交没有(因为该文件不是在另一个分支的历史记录中创建的,也没有被删除)。提交不会自动“拥有所有文件”。 (并且要清楚 - 是的,在 git 术语中,说“在分支上提交”是脆弱的,而“在分支上的文件”更是如此,但 OP 的含义仍然非常清楚。)

标签: git git-cherry-pick


【解决方案1】:

你可以正常使用cherry-pick。尝试将更改应用于不存在的文件应该会发生冲突(因此它不会自动提交),然后您可以使用

git rm path/to/file1

然后提交。

更一般地说,您可以使用git cherr-pick -n 来确保即使在补丁不冲突的情况下也不会进行任何提交,然后在提交之前进行任何您想要的编辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2020-05-11
    相关资源
    最近更新 更多