1

我想知道是否可以在未签出的分支上应用 git 补丁?

我想这样做是因为我不想在我的工作分支上使用这个补丁,而是在我现在不使用的专用分支上。这是一个大分支,检查它会:

  1. 使我的繁茂标签无用或损坏。重建它们需要很长时间。
  2. 另外,如果我签出这个分支并回滚到我的工作分支,我的内核将强制重建......
4

3 回答 3

1

这是非常间接的,但有可能。您可以通过仅将其应用于索引来做到这一点。

简单的方法:

$ git read-tree <branch>
$ git apply --cached <patch>
$ git update-ref refs/heads/<branch> \
    -m "<optional reflog message>" \
    $(git commit-tree $(git write-tree) -m "<message>" -p <branch>)

如果您希望一切都“更干净”(即,提交的 reflog 看起来很正常),那么这里有一个更长的方法,更冗长:

$ git checkout -b temp             # Create a temp branch
$ git reset --mixed <branch>       # Reset the index to the branch you want
$ git apply --cached <patch>       # Apply the patch to the index
$ git commit                       # Create a commit object

  # Move the branch's reference to the new commit
$ git update-ref refs/heads/<branch> refs/heads/temp

  # Clean up
$ git checkout --force <original_branch>
$ git branch -d temp
于 2012-06-22T19:13:13.763 回答
1

您可以从当前存储库克隆到另一个目录,然后检查您想要在那里工作的分支吗?AFAIK,您只能将补丁或樱桃选择提交等应用于您工作目录中的文件。

对于我从事的一些项目,我的系统上有多个存储库副本,每个副本都签出不同的分支。

于 2012-06-22T17:56:55.850 回答
1

我认为这不可能,主要是因为这个原因:

您将如何处理补丁失败?

于 2012-06-22T18:07:54.773 回答