我想知道是否可以在未签出的分支上应用 git 补丁?
我想这样做是因为我不想在我的工作分支上使用这个补丁,而是在我现在不使用的专用分支上。这是一个大分支,检查它会:
- 使我的繁茂标签无用或损坏。重建它们需要很长时间。
- 另外,如果我签出这个分支并回滚到我的工作分支,我的内核将强制重建......
这是非常间接的,但有可能。您可以通过仅将其应用于索引来做到这一点。
简单的方法:
$ 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
您可以从当前存储库克隆到另一个目录,然后检查您想要在那里工作的分支吗?AFAIK,您只能将补丁或樱桃选择提交等应用于您工作目录中的文件。
对于我从事的一些项目,我的系统上有多个存储库副本,每个副本都签出不同的分支。
我认为这不可能,主要是因为这个原因:
您将如何处理补丁失败?