現在、デバッグ ブランチにいますが、作業ツリーを変更せずに (デバッグ ブランチのままにして)、マスター ブランチに切り替えて、変更の一部をマスター ブランチにコミットしたいと考えています。
これを実行する方法はありますか?
ベストアンサー1
次の操作を実行できます。
git checkout --detach
git reset --soft master
git checkout master
説明:
debug
ブランチ上にいる場合は、git reset --soft master
作業ツリーとインデックスをそのままにして、コミットmaster
ポイントに移動します。問題は、debug
もこのコミットにリセットされることです。そのため、コミットはdebug
「失われ」 (実際には失われませんが、直接アクセスできなくなります)、ブランチ上にまだいることになりますdebug
。
git reset
移動を防ぎつつコミットをdebug
設定するには、まず現在のコミットを直接ポイントするようにします(HEAD
master
git checkout --detach
HEAD
man git-checkout
、セクション「DETACHED HEAD」を参照してください)。その後、ブランチに触れることなくリセットを実行できますdebug
。
現在はHEAD
コミットがmaster
指している場所を直接指しています。つまり、まだ切り離された状態です。git checkout master
にアタッチするだけmaster
で、ブランチにコミットする準備が整いますmaster
。
(デフォルトでは、パスが渡されない場合)「ソース」コミットと「ターゲット」コミットの間で変更されたファイルのみが更新され、作業ツリー内のファイルへのローカルの変更は保持されることgit checkout
に注意してください。この場合、両方のコミットは同じであるため、作業ディレクトリ内のファイルは変更されません。