我想知道是否可以在未签出的分支上应用git补丁?
我想这样做是因为我不想在我的工作分支上使用这个补丁,而是在我现在不使用的专用分支上。这是一个很大的分支,检查出来会:
答案 0 :(得分:1)
您可以从当前存储库克隆到另一个目录,并查看您要在那里工作的分支吗? AFAIK,您只能对工作目录中的文件应用补丁或者提取提交等。
对于我工作的一些项目,我的系统上有一个存储库的多个副本,每个都检查了不同的分支。
答案 1 :(得分:1)
我认为这不可能主要是因为这个原因:
你将如何应对补丁失败?
答案 2 :(得分: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