作業ツリーに触れずにブランチを切り替えるには?質問する

作業ツリーに触れずにブランチを切り替えるには?質問する

現在、デバッグ ブランチにいますが、作業ツリーを変更せずに (デバッグ ブランチのままにして)、マスター ブランチに切り替えて、変更の一部をマスター ブランチにコミットしたいと考えています。

これを実行する方法はありますか?

ベストアンサー1

次の操作を実行できます。

git checkout --detach
git reset --soft master
git checkout master

説明:

debugブランチ上にいる場合は、git reset --soft master作業ツリーとインデックスをそのままにして、コミットmasterポイントに移動します。問題は、debugもこのコミットにリセットされることです。そのため、コミットはdebug「失われ」 (実際には失われませんが、直接アクセスできなくなります)、ブランチ上にまだいることになりますdebug

git reset移動を防ぎつつコミットをdebug設定するには、まず現在のコミットを直接ポイントするようにします(HEADmastergit checkout --detachHEADman git-checkout、セクション「DETACHED HEAD」を参照してください)。その後、ブランチに触れることなくリセットを実行できますdebug

現在はHEADコミットがmaster指している場所を直接指しています。つまり、まだ切り離された状態です。git checkout masterにアタッチするだけmasterで、ブランチにコミットする準備が整いますmaster

(デフォルトでは、パスが渡されない場合)「ソース」コミットと「ターゲット」コミットの間で変更されたファイルのみが更新され、作業ツリー内のファイルへのローカルの変更は保持されることgit checkoutに注意してください。この場合、両方のコミットは同じであるため、作業ディレクトリ内のファイルは変更されません。

おすすめ記事