いくつかの別々のコミットでコミットしたい大きなコードを作成しました。
したがって、すべての変更がコミットされるまで、関連する部分のステージング、コミット、ステージング、コミットなどを行うことができます。
欠けている部分は、コミットを正しく分割したかどうかをテストする方法です。
つまりステージング領域にある部分が少なくともコンパイルされるかどうか?
そのためには、後でコミットする変更を失うことなく、何らかの方法で作業ツリーをインデックス(ステージング領域)と同期させる必要があります。
それを行うためのright方法は何ですか?
それを行うための最も速い方法は何ですか?
更新:
magitでそれを行う方法は?
あなたはそれを行うことができます:
$ git branch task1 # first set of commit to do
中間ブランチは、コンテンツをインデックスにゆっくりと追加するときに、いくつかの中間コミットを記録するのに役立ちます。
次に、 追加するための対話型セッション 必要なものを試してください。
$ git add -i
追加した内容を確認したいときはいつでも追加してください。
$ git stash --keep-index
コンパイルする場合は、現在の作業をgit commit
し、task1
がまだ完了していない場合は、git stash pop
を実行して、作業ツリー全体を復元し、繰り返します。
task1
が完全にベイク処理されたら、 すべての 'task1
'コミットをトリム 、マスター内のすべての作業をマージできます。
$ git checkout master
$ git merge task1
$ git branch -D task1 # no need for that intermediate branch
重要なtask1
コミットの履歴を保存したい場合は、master
をtask1
にマージする前に、最初にtask1
をマスターの上にリベースできます(早送り)
最後に、スタッシュにまだ進行中の作業が含まれている場合は、task2
に対してすべてのプロセスを繰り返します。
これが私が使用するmagitの方法です:
テストを行って、コミットが適切かどうかを確認します。変更が必要な場合は、前と同じようにやり直しますが、コミットメッセージの画面でコミットする前にCtrl-CCtrl-Aを押します。これにより、新しいコミットを作成する代わりに、最後のコミットが修正(完了)されます。
後で、あるコードが最後に実行する前のコミットを修正する必要があることがわかった場合は、コードをそれ自体で(一時的な要約とともに)コミットし、「L」のおかげで正しいコミットに折りたたむ必要があることに注意してください。 「ログ画面にアクセスし、両方のコミットの前にポインタをポイントして、スキッシュし、「E」を押して「gitrebase-i」セッションを開始します。一時的な要約がターゲットのコミットを「修正」するように、コミットを並べ替えます。バッファとTADAを終了します。すべて完了です。