2016-09-05 12 views
0

私は自分のプロジェクトにいくつかの変更を加えたいと思っています。(プロジェクト構造の変更や過剰なロギングラインの削除など)私の偏ったワークフローに役立つものですが、私のgitの履歴に変更が表示されないようにしたい私はマージのためのブランチを作成します。私がこれをやらなければならない回数のために、手動で履歴を書き換える努力はあまりにも多いです。gitはパッチを適用し、履歴から無視しますか?

diffファイル(例:format-diffから作成)を適用して、ファイルをディスク上で編集することはできますが、履歴とインデックスは違いを気付かないのですか?私は考えることができます

だけハックはpatchと非gitの.diffファイルを適用し、git update-index --assume-unchanged foo/barにファイルを追加することですが、より良いそこにある - より多くの「gitの」 - の方法は?

+1

別のブランチで変更を加えます。ブランチは基本的には無料ですが、一時的にそれらを試してみたいのであれば、ブランチ自体のコストを落とす分離されたHEADを使用してください(ブランチをもう一度チェックしてください。 〜30日以内にed)。これを頻繁に行う必要がある場合は、これらの変更を含むコミットの参照を保持してください。こうすることで、+ cherry-pick + test + checkout-to-discardをデタッチできるようになります。 – torek

+0

こんにちはTorak、それは私が試みたものです。私はgitを残さずに、ブランチの手動管理をあまり含まないより良い方法を模索しています。私は変更されていない状態を設定/解除し、パッチを適用するスクリプトに移ったが、それは理想的ではない。 – fommil

答えて

-1

手動で履歴を書き換えようとする試みは、これを行うにはあまりにも多くの回数です( 回)。

しかし、これはまったく動作する必要はありません。あなたの部分には少しの規律があり、実際には半自動化することができます。最終的な結果に含めるべきではない余分なデバッグなどのブランチに変更を加えることは、インスタンス

のためのような、インタラクティブなリベースを行うときに非常にはっきりと際立っているように、コミットメッセージをマークするときに、私は何をすべきか

pick fdbd12a Mininmal main.c 
pick 21e3d6f hello world with arg support 
pick a62ebac ========= DEBUG: print argc ======== 
pick 3160605 Use EXIT_SUCCESS 
pick 0ec0ac6 constify message 

(詳細はthis answerを参照してください)。

は非最終的には私はviエディタフィルタ "!grep -v ======="と にすることができ、彼らはは必要ありません精神的な努力 でなくなっているコミット削除します。だから、ちょっと訓練され、コミットメッセージを明白な方法でマークする必要があります。

この方法では、開発中にすべてのデバッグ/最終除外変更を含めて1つのブランチで作業を続けることができます。途中でブランチを別の問題なくリベースすることができます。


除く、その場合I recommendKDiff3を使用してそれらを解決するために、マージの競合をトリガする可能性がコミットされます。

+0

申し訳ありませんが、これは私が尋ねた質問に答えるものではありません。あなたは「おばあちゃんに卵を吸う方法」と言う言葉を聞いたことがありますか? – fommil

関連する問題