21

いくつかの別々のコミットでコミットしたい大きなコードを作成しました。
したがって、すべての変更がコミットされるまで、関連する部分のステージング、コミット、ステージング、コミットなどを行うことができます。

欠けている部分は、コミットを正しく分割したかどうかをどのようにテストできるかです。
つまり、ステージング領域にある部分が少なくともコンパイルされるかどうか。

そのためには、後でコミットする変更を失うことなく、何らかの方法で作業ツリーをインデックス(ステージング領域)と同期させる必要があります。

それを行う正しい方法は何ですか?それを行う最も簡単な方法
は何ですか?

更新:
magitでそれを行う方法は?

4

2 に答える 2

16

あなたはそれを行うことができます:

$ 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リベースできます(早送り)。task1mastertask1

最後に、スタッシュにまだ進行中の作業が含まれている場合は、すべてのプロセスを繰り返しますtask2

于 2010-04-17T15:22:50.393 に答える
0

これが私が使用する魔法の方法です:

  • ハンク/ファイル/リージョンをステージングまたはステージング解除するために、magit「u」または「s」を使用して最初のコミットのインデックスを作成します。(これは git gui でも実行できます)。インデックスをコミットする準備ができたら:
  • "c" でコミットし、コミット メッセージを書きます。Ctrl-C Ctrl-C でコミットします。
  • "z" の後に << Enter>> を続けて stash すると、すべての変更が stash されます。変更を元に戻すには、ポインタが正しい stash エントリにあるときに「A」を使用できます。

テストを行って、コミットが適切かどうかを確認します。変更が必要な場合は、前と同じようにやり直しますが、コミット メッセージの画面でコミットする前に Ctrl-C Ctrl-A を押します。これにより、新しいコミットを作成する代わりに、最後のコミットが修正 (完了) されます。

後で、最後に行ったコミットより前のコミットを修正するコードが必要であることに気付いた場合は、コードを単独で (一時的な要約を使用して) コミットし、"L " をクリックしてログ画面にアクセスし、つぶしたい両方のコミットの前にポインタを置き、"E" を押して "git rebase -i" セッションを起動します。コミットの順序を変更して、一時的な要約が対象のコミットを「修正」するようにします。バッファを終了し、TADA を終了します。すべてが完了しました。

于 2011-10-07T13:18:02.893 に答える