Gitでは、変更を隠します。隠しておくパッチを作成することは可能ですか?そして、そのパッチを他のリポジトリ(同僚)に適用しますか?
私は「git format-patch -1」を知っていますが、それは私がコミットしたものだと思います。しかし、私は隠していた変更についても同じことを探していますか?
また、他のリポジトリにパッチを適用するにはどうすればよいですか?
確かに、 git stash show
はこれをサポートします:
git stash show -p
この回答は、パッチの保存と使用したい場所への適用の両方に関する情報を提供します。
出力をファイルに格納するには:
git stash show -p --color=never > my-patch-name.patch
パッチが適切に見えることを確認します。
git apply --stat my-patch-name.patch
エラーがないことを確認します。
git apply --check my-patch-name.patch
パッチを適用する
git apply my-patch-name.patch
つかいます
$> git stash list
stash@{0}: WIP on master: 84fx31c Merged with change to /public/
stash@{1}: WIP on master: 463yf85 FlupResource: also takes json as a query parameter
最近保管したもののリストを取得します。 Gitは、隠しておくと実際にコミットオブジェクトを作成します。
彼らは他のすべてのようなコミットです。ブランチでチェックアウトできます:
$> git checkout -b with_stash stash@{0}
その後、このブランチを公開し、同僚はそのコミットをマージまたはチェリーピックできます。
上記のソリューションは、バイナリデータでは機能しません。次のサポートを追加します。
git stash show stash@{0} -p --binary
編集
注:上記の返信にコメントを追加したかっただけですが、評判が十分ではありません。
これは最近のGitからの更新の1つかもしれないと思います。隠しておいた変更にパッチを当てる必要はありません。あるブランチの隠された変更を別のブランチに適用することができます。
ブランチAで、stash @ {1}と呼ばれる変更を隠したとします。
ブランチBに切り替えます。
$git stash apply stash@{1}
これにより、ブランチAの変更がブランチBに適用されます。