git stash がブランチごとに固有ではないのはなぜですか?
質問
これにより、あるブランチから次のブランチに変更を移動できるようになると思いますが、それがチェリーピッキングの目的であり、変更をコミットしていない場合は、変更を移動すべきではないのではないかと思います。
私は時々、間違ったブランチに間違ったスタッシュを適用したことがあり、この質問について疑問に思いました。
解決
前述したように、「ブランチごとのスタッシュ」が必要な場合は、実際には既存のブランチから分岐する新しいブランチが必要です。
また、スタッシュを使用すると、作業中のブランチにプルできるというすでに述べた事実に加えて、次のことも可能になります。 スイッチ すべてをコミットする前にブランチします。これは、通常の意味でのチェリーピッキングではなく、チェリーピッキングに役立ちます。 あなたの作業コピー.
たとえば、機能ブランチで作業しているときに、そのブランチに関係のないコード内の小さなバグや表面上の不純物に気づくことがよくあります。まあ、それらはすぐに修正します。コミットする時が来たら、関連する変更を選択的にコミットしますが、修正や装飾はコミットしません。代わりに、それらを隠しておきます。これにより、minor-fixes-on-stable ブランチに切り替えることができます。そこで、隠し場所を適用して、各マイナー修正を個別にコミットできます。(問題の変更に応じて、変更の一部を再度隠して、別の機能ブランチに切り替えて適用します。 それらの.)
これにより、作業中にプログラミング モードに深く入り込むことができ、コードの適切なライブラリ管理について心配する必要がなくなります。そうすれば、精神的な休憩が取れたら、戻って変更をすべての適切な棚に慎重に分類できます。
スタッシュがグローバルでない場合、このタイプのワークフローを実行するのははるかに困難になります。
他のヒント
ブランチから離れて実行される「スタッシュ」が必要な場合は、次のようにして、現在のブランチから離れた新しいブランチに変更を保存します。
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
これがお役に立てば幸いです!
git-stash は、まだチェックインされていない変更を現在チェックアウトされているブランチとは別のブランチに移動するのに最も役立ちます。
たとえば、バグ修正ブランチで単純な変更を行っていることによく気づきます。ただ、取り組んでいる変更が最初に予想していたよりも複雑であることがわかりました。Git-stash は、その変更セットを別のブランチに移動する最も簡単な方法です。