我想知道是否可以在非检出分支上应用git补丁?如何在未检出的分支上应用git补丁?
我想这样做是因为我不想在我的工作分支上使用此修补程序,而是在我现在不使用的专用分支上。这是一个大分支,并检查出它:
- 使我的旺盛标签无用或损坏。重建它们需要很长时间。
- 还,我的内核将迫使重建,如果我签这个分支和回滚到我的工作分支...
我想知道是否可以在非检出分支上应用git补丁?如何在未检出的分支上应用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>)
如果你想要的一切是“干净”(即有引用日志看看正常的提交),那么这里有一个更长的路,相当多的冗长:
$ 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,你只能申请一个补丁,或樱桃选择提交等到您的工作目录中的文件。
对于我工作的一些项目,我的系统上有多个版本库,每个版本都有不同的分支。
这实际上可能是我必须要做的。 –
@ m-ric Idk如果你已经做到了,但我想出了一个办法。 :D(我为此感到自豪。) – vergenzt
@vergenzt不,我还没有想出一个办法。我认为Peter van der Does是对的,我将如何处理补丁失败?我重建了我的内核,就像我每天早上做的这几天一样...... –
我不认为这是可能的,主要是因为这个原因:
,你将如何处理补丁失败?
嗯,这很有道理。我同意这会很复杂。 –
哇,我不知道'git read-tree'。我必须尝试解决您的解决方案,这听起来有点冒险和令人兴奋:-)。但有一个问题:你称之为“reflog”? –
reflog是分支和HEAD引用已存储在存储库中的历史记录。 [这是一个例子](https://gist.github.com/3004498)。在那个例子中,最近的“reflog消息”将是“commit:test”。你可以通过运行'git reflog [refs/heads/]'来查看你的版本库。 (如果你没有指定分支,它会假定为HEAD。) –
vergenzt