私は2つの分岐、他のブランチからステージングエリアに変更を加えることはできますか?
- マスター
- 新機能
新機能は、私がマスターに追加したいが、私は私がマージしたいどのくらいのコントロールをしたいコミットしているしています。
各行の変更を追加/却下するオプションを希望します。同様に私はできますgit add -p
多分私は間違った用語を検索していた。これはかなり明白な作業のようです。
私は2つの分岐、他のブランチからステージングエリアに変更を加えることはできますか?
新機能は、私がマスターに追加したいが、私は私がマージしたいどのくらいのコントロールをしたいコミットしているしています。
各行の変更を追加/却下するオプションを希望します。同様に私はできますgit add -p
多分私は間違った用語を検索していた。これはかなり明白な作業のようです。
使用git cherry-pick
、その後、対話的にコミットするかを選択します。
のgit
をチェリーピック...
-n
を、--no-commit
通常
git cherry-pick
自動的にシーケンスを作成するo fはコミットする。この フラグはチェリーピックアップに必要な変更をコミットせずに 作業ツリーとインデックスにそれぞれ適用します。さらに、 このオプションを使用すると、インデックスがHEADコミットと一致する必要はありません。 cherry-pickはインデックスの開始状態に対して行われます。これは、インデックス に複数のコミットの効果をチェリーピッキングするときに便利です。
ので、コマンドのシーケンスは、次のようになります。
git cherry-pick -n <commitid> # merge commitid into the index and working-tree
git reset # clear the index
git add -p # selectively add merged changes to the index
また、あなたがステージング領域から望ましくないハンク削除にgit reset -p
を使用することができます唯一のステージングがあります
git cherry-pick -n <commitid> # merge commitid into the index and working-tree
git reset -p # interactively remove from the index changes brought by commitid
ありがとう、それは働いた。前に 'cherry-pick'で試してみましたが、' -n'フラグを使っていませんでした。あなたの助けに感謝! – Sisir
私はあなたがパッチファイルを使用しようとすることができると思います。
は、パッチファイルの実行を作成するには、次のファイルで
git checkout master
git diff ..new-features > patch.diff
patch.diff
あなたは枝のマスターと新機能の違いがあります。
今、あなたは実行し、パッチファイルを適用することができます。
git apply patch.diff
今、あなたは、任意の方法であなたの変更を管理することができます。 -n|--no-commit
オプション付き
@Leonはい、私はパッチを意味しました。あなたよ!私はすでにこのタイプミスを修正しました。 –
を作業ディレクトリーにあり、ブランチごとに1つではありません。 – choroba
@choroba:実際には、*標準*ステージングエリア(別名「the」インデックス)は1つしかありませんが、環境変数 'GIT_INDEX_FILE'を使用して独自の一時インデックスを定義できます。これは、この特定の作業のために行うことは有益なことではありません。:-)しかし、残念ながら、 'git commit -a'のいくつかの奇妙なコーナーを説明するために知っておく必要があり、' --only'または '--include'でコミットします。 – torek
@torek 1つのローカルリポジトリを持つ複数の作業ディレクトリを持つことができます。それぞれのリポジトリには独自のインデックスがあります。あなたは両方とも正しいのです:P – poke