3

B1とB2の2つのブランチがあります。私はB2にいて、ステージングされたファイルとステージングされていないファイルを持っています。

ステージングされたファイルをB1でコミットし(ファイルを編集したときにB1にいたと思っていましたgit add)、ステージングされていないファイルをB2でコミットします。

出来ますか?どのように?

4

3 に答える 3

3

もっとエレガントな方法があると確信していますが、思いつくのは次のとおりです。

  1. ステージングされたファイルを B2 にコミットする
  2. ステージングされていない作業を B2 に隠します
  3. B1 に切り替えてから、B1 で B2 の最新のコミットを選択します
  4. B2 に戻り、最新のコミットをリセットします (--困難な方法)
  5. B2 で隠し作業をステージングしてコミットする

編集

この質問には、私が提案したことを多かれ少なかれ行う詳細な回答があります。

于 2013-01-31T08:46:35.660 に答える
3

git stashブランチ間でダーティな変更を移動する場合、非常に強力です。あなたの場合、次の手順を適用できます。

  1. git stash --keep-index、これはステージングされていないファイルのみを隠します
  2. git stash、これは残り、つまりステージングされたファイルを隠します
  3. B1に乗り換え
  4. git stash pop、ステージングされたファイルは B1 に移動されます
  5. B2に切り替え
  6. git stash pop、ステージングされていないファイルは B2 に移動されます

その後、各ブランチの変更を個別にコミットできます。

于 2013-01-31T09:22:25.963 に答える
1

ブランチ B1 に切り替えても変更されたステージング ファイルとステージングされていないファイルが変更されない場合は、何も影響を与えずにブランチを切り替えることができ、ファイルを簡単にコミットして B2 に戻すことができます。

ただし、変更したファイルが B1 と B2 の間で変更された場合、ブランチを切り替えることはできません。この場合、ブランチを切り替える前に変更を隠しておく必要があります。

  1. git stash --keep-index ステージングされたファイルを隠して保持する
  2. git reset HEAD ステージングされたファイルをアンステージする
  3. git stash 以前にステージングされたファイルを隠します
  4. git checkout B1 B1ブランチに切り替える
  5. git stash pop 最後のスタッシュをアンスタッシュして削除するには
  6. git commit -a 以前にステージングされたファイルを B1 にコミットするには
  7. git checkout B2 B2ブランチに切り替える
  8. git stash pop
  9. git commit -a B2 で残りのすべての変更をコミットする

これらのコマンドには注意してください。私は git プロではありません! :-)

于 2013-01-31T09:15:56.323 に答える