6

ブランチmasterと別のブランチproductionがあり、両方にファイルのバージョンとprog.py他の多くのファイルが含まれているとします。を含む、運用ブランチの多くのファイルを変更すると想像してくださいprog.py。さて、ブランチで行われたいくつかの変更のみをブランチのバージョンに適用する最良の方法何ですか?prog.pyproductionmaster

ブランチに移動し、masterブランチからファイルをインポートし始めましたproduction

git checkout master
git checkout production -- prog.py

git add -p手動で変更を行い、選択できるようにしたいと思っていたからです。問題は、それprog.pyが作業ツリーとインデックスの両方にあることです。作業ツリーに触れずにインデックスから削除するにはどうすればよいですか?

または、どの変更をブランチからブランチにprog.pyインポートするかを選択するより良い方法はありますか?productionmaster

4

3 に答える 3

17

この質問がされたときにこれが正しいかどうかはわかりませんが、現在のバージョンのgitを使用すると、次のことができます。

git checkout -p production -- prog.py

そして、ほとんどのコマンドで行うのと同じインタラクティブなハンクピッカーを取得し-pます。

于 2011-12-18T04:02:45.637 に答える
4

1 つのことだけを実行する小さくて粒度の高いコミットを作成し、後で別のブランチで必要な変更をチェリーピックすることはgit cherry-pick $commit_id、合理的なアプローチのように思えます。

于 2010-10-06T13:34:00.037 に答える
1

よし、試してみたところgit reset、インデックスに保存されている変更が削除されました。 git add -pその後、期待どおりに機能し、適用する必要がある個々の変更を選択できます (つまり、インデックスに保存されます)。不要な変更は、git commit、 、で破棄できgit reset --hardます。

うまくいけば、質問とこの回答が他の誰かにとって興味深いものになるでしょう! :)

PS:元の質問で尋ねられたように、単一のファイルをチェックアウトするため、この回答を承認済みとしてマークしました。

于 2010-10-06T13:34:36.333 に答える