web-dev-qa-db-ja.com

別のブランチにスタッシュを適用する

私は誤って間違ったブランチに取り組んでいました。ここで、すべての変更を正しいブランチに転送します。

変更を隠して正しいブランチに適用すると、コミットされていない変更が正しいブランチに追加されるだけですか、それとも正しいブランチに存在しない間違ったブランチからのすべての変更/コミットが追加されますか?

たとえば

間違ったブランチがあります:

  • コミットする

  • コミットされていない変更b

正しいブランチは

  • コミットc

間違ったブランチでgit stashを実行し、正しいブランチにgit stashを適用すると、コミットaが正しいブランチに転送されますか?

14
MeesterPatat

私は1つのスタッシュを行い、コミットをリセットして(変更を失わないように混合して)、コミットをスタッシュし、正しいブランチに変更して両方のスタッシュをポップします。

git stash save "b"
git reset HEAD~
git stash save "a"
git checkout correct-branch
git stash pop
git commit -m "a"
git stash pop
12
miguel_ibero

ブランチがまだ存在しない場合:

  • git stashブランチ "new_branch"

もしそうなら:

  • git stashブランチ "temp_new_branch"
  • git add "your changes"
  • git commit
  • git checkout "stashを適用する目的のブランチ"
  • git merge "temp_new_branch"
  • git Push
  • git branch -d "temp_new_branch"
7
miguelfg

回避策

  1. 必要な変更を加えてコミットします。
  2. これらの変更を有効にするブランチにチェックアウトします。
  3. そのブランチからgit cherry-pick 23h123kjb(<-このハッシュをgit log取り込みたいコミットに固有)
  4. 利益!
2
dYale

いいえ、できません。コミットはStashには入れられません。また、変更をコミットせず、非スタッシュにしてブランチを切り替えることもあります(すべてのケースで確実ではありませんが)。

2
Bugfinger

できること:

  • 「間違った」ブランチにパッチを作成します。
  • 変更を破棄する
  • 正しいブランチに切り替える
  • そのブランチにパッチを適用します
0