0

Git には、実験的なブランチ ( EXP-12) があります。そこでいくつかの変更を行いましたが、まだコミットする準備ができていません。マスターで調整する必要があります。

マスターに行きます。

次の 2 つのケースが考えられます。

  1. 変更中にインデックスに含めた場合EXP-12、マスター ブランチのインデックスにも表示されます。
  2. のときに変更をインデックスに含めなかった場合EXP-12、それらのファイルは、マスター ブランチでもコミット用にステージングされていない変更として表示されます。

EXP-12私の問題は、すべてをマスター上に置き、別々にしたいということです。いくつかの「実験的」な変更を行いたいEXP-12> マスターに移動 > マスターで変更を行う > コミット ( git add -A) のすべてをステージング > コミット > EXP-12 に戻って実験を続行します。これを行うと、マスター ブランチでの私のコミットには、 で行われたすべての変更が含まれEXP-12ます。

その背後にあるロジックは何ですか?または、何か不足していますか?

4

1 に答える 1

0

この問題に対する古典的な解決策は、使用git stashすることです-オンになっている場合は、次のEXP-12ことができます。

git stash save --keep-index "Some work-in-progress on EXP-12"

...次に、通常どおりブランチをマスターに変更し、いくつかの作業を行い、元に戻して、最新のスタッシュを適用します。

git checkout master

[... do some stuff ...]

git checkout EXP-12

git stash pop

ただし、私は個人的には進行中のコミットを作成することを好み、後で次のいずれかを行います。

  • で変更しますgit commit --amend
  • ブランチを前のコミットに戻しますが、すべての作業をステージングされていない変更として残します。git reset HEAD^
  • ... または、git rebase -i <EARLIER-COMMIT>いくつかの進行中のコミットをまとめて押しつぶすために使用します。

スタッシュを使用するよりも実際のコミットを作成する利点は、保存したコミットだけでなく、任意のコミットにスタッシュを適用できることです。一方、通常のコミットはそのブランチに移動し、以前のコミットに結び付けられます。

于 2012-06-30T09:26:47.577 に答える