チェックアウトされていないブランチに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
現在のリポジトリから別のディレクトリにクローンを作成し、そこで作業したいブランチをチェックアウトできますか?ちなみに、作業ディレクトリ内のファイルには、パッチやチェリーピックコミットなどのみを適用できます。
私が取り組んでいるプロジェクトのいくつかでは、システムにリポジトリの複数のコピーがあり、それぞれに異なるブランチがチェックアウトされています。
私はこれが主にこの理由のために可能であるとは思わない:
パッチの失敗にどのように対処しますか?