B1とB2の2つのブランチがあります。私はB2にいて、ステージングされたファイルとステージングされていないファイルを持っています。
ステージングされたファイルをB1でコミットし(ファイルを編集したときにB1にいたと思っていましたgit add
)、ステージングされていないファイルをB2でコミットします。
出来ますか?どのように?
B1とB2の2つのブランチがあります。私はB2にいて、ステージングされたファイルとステージングされていないファイルを持っています。
ステージングされたファイルをB1でコミットし(ファイルを編集したときにB1にいたと思っていましたgit add
)、ステージングされていないファイルをB2でコミットします。
出来ますか?どのように?
もっとエレガントな方法があると確信していますが、思いつくのは次のとおりです。
編集
この質問には、私が提案したことを多かれ少なかれ行う詳細な回答があります。
git stash
ブランチ間でダーティな変更を移動する場合、非常に強力です。あなたの場合、次の手順を適用できます。
git stash --keep-index
、これはステージングされていないファイルのみを隠しますgit stash
、これは残り、つまりステージングされたファイルを隠しますgit stash pop
、ステージングされたファイルは B1 に移動されますgit stash pop
、ステージングされていないファイルは B2 に移動されますその後、各ブランチの変更を個別にコミットできます。
ブランチ B1 に切り替えても変更されたステージング ファイルとステージングされていないファイルが変更されない場合は、何も影響を与えずにブランチを切り替えることができ、ファイルを簡単にコミットして B2 に戻すことができます。
ただし、変更したファイルが B1 と B2 の間で変更された場合、ブランチを切り替えることはできません。この場合、ブランチを切り替える前に変更を隠しておく必要があります。
git stash --keep-index
ステージングされたファイルを隠して保持するgit reset HEAD
ステージングされたファイルをアンステージするgit stash
以前にステージングされたファイルを隠しますgit checkout B1
B1ブランチに切り替えるgit stash pop
最後のスタッシュをアンスタッシュして削除するにはgit commit -a
以前にステージングされたファイルを B1 にコミットするにはgit checkout B2
B2ブランチに切り替えるgit stash pop
git commit -a
B2 で残りのすべての変更をコミットするこれらのコマンドには注意してください。私は git プロではありません! :-)