あるブランチから次のブランチに変更を移動できると思いますが、それがチェリーピッキングの目的であり、変更をコミットしない場合は、変更を移動するべきではないでしょうか。
私は時々間違った枝に間違った隠し場所を適用しました、それは私にこの質問について疑問を残しました。
回答:
前述のように、「ブランチごとの隠し場所」が必要な場合は、既存のブランチから分岐する新しいブランチが本当に必要です。
また、スタッシュを使用すると、作業中のブランチにプルできるという前述の事実に加えて、すべてをコミットする前にブランチを切り替えることもできます。これは、通常の意味でのチェリーピッキングではなく、作業コピーのチェリーピッキングに役立ちます。
F.ex.、機能ブランチで作業しているときに、そのブランチに関係のないコードの小さなバグや表面的な不純物に気付くことがよくあります。まあ、私はそれらをすぐに修正します。コミットするときが来たら、私は関連する変更を選択的にコミットしますが、修正や外観はコミットしません。代わりに、それらをスタッシュします。これにより、minor-fixes-on-stableブランチに切り替えることができます。ここで、スタッシュを適用して、各マイナーフィックスを個別にコミットできます。(問題の変化に応じて、また、私は適用異なる機能ブランチに切り替えるには、まだ再びそれらのいくつかを隠しますもの。)
これにより、作業中にプログラミングモードに深く入り込むことができ、コードの適切なライブラリアンシップについて心配する必要がなくなります。その後、精神的な休憩を取るときに、戻って変更をすべての適切な棚に慎重に分類できます。
隠し場所がグローバルでない場合、このタイプのワークフローを実行するのははるかに困難になります。
As mentioned, if you want a “per-branch stash,” you really want a new branch forking off from the existing branch.
。特に、同じプログラムの2つのバージョンを切り替えることがよくあり、フル実行にmake
は10分かかります。ビルドされたバイナリをブランチごとに格納できると非常に便利です。そして、私は確かに、ログやブランチにバイナリを入れたくありません。
gitk --all
」は、最初の隠し場所を表示しなくなりました。だまされているのではないかと思いました。2番目のブランチでの作業が完了した後、その隠し場所をポップしました。その後、更新した「gitk --all
」は元の隠し場所を再び表示しました。
ブランチから実行される「スタッシュ」が必要な場合は、次のようにして、現在のブランチから離れた新しいブランチに変更を保存します。
git checkout -b new_stash
git commit -a -m "stashed changes"
隠し場所を元に戻す
git reset HEAD^
git branch -d new_stash
git stashは、変更をダーティツリーにプルできるため、特に優れた編集があり、
git pull
できません。変更を隠し、プルしてから適用できます。
git stash
git pull
git stash apply
git stash clear
これがお役に立てば幸いです。
make
そのブランチで実行された結果のバイナリの束である場合はどうなりますか?(ごとのブランチスタッシュは、あなたがその枝にインクリメンタルビルドを行う時間次の時間を節約するだろうが、あなたは確かにインデックスにバイナリを追加する必要はありません)
git-stashは、まだチェックインされていない変更を、現在チェックアウトされているブランチとは別のブランチに移動するのに最も役立ちます。
たとえば、バグ修正ブランチで簡単な変更を行うことがよくあります。私が取り組んでいる変更が最初に推測したよりも複雑であることに気付くだけです。Git-stashは、その一連の変更を別のブランチに移動する最も簡単な方法です。
git stash-here
誰でも?