3

私はおそらく git を悪用し、決して使用するように設計されていない方法で使用しています。私は、複数のマシンで開発するチーム サイズ 1 の唯一の開発者です。たとえば、私はマシン A でコーディングし、マシン B とマシン C でコードをテスト (および再コンパイル) する必要があります。私は迅速な開発を行います (たとえば、毎分コミットし、マシン B/C に行ってテストします)。 .

その結果、私のコミットの多くには意味のあるメッセージが含まれています。具体的には、これを非常に頻繁に行います。

マシンA

git add -u
git commit -m "work"
git push

マシンB/C

git pull
make
./run_tests

大野!うまくいきません... マシン A に戻り、1 分後に別のコミットを行います。

その結果、ご想像のとおり、私の git --log 履歴には、「作業」のみを含む価値のないコメントがたくさんあります。同じメッセージを持つすべての git コミットを自動的に組み合わせる方法はありますか。

ありがとう。

明確にするために、私のコメント履歴 (2 年前までさかのぼる) は次のようなものです。

work
work
work
work
OMG THIS actually works.
work
work
work
OMG we solved a huge problem... we should call this v1.0
work
work
work

すべての「作業」メッセージを自動スカッシュして、次のようにしたいと考えています。

work
OMG THIS actually works.
work
OMG we solved a huge problem... we should call this v1.0
work

etc...

サイド、なぜ私がこのようにgitを悪用するのかについては、基本的にはctrl-s機能として使用しています...また、20台のマシンで開発を行っており、1分ごとに変更後にコードを共有する効率的な方法が必要です。オフライン/ハードファイアウォール/その他のマシンでも作業しているため、NFSはオプションではありません...

4

2 に答える 2

1

あなたはgitを悪用していません。これは git にとって絶対に良いシナリオです。

で作業リポジトリをセットアップしてA、(おそらく既存の remote のほかにorigin) さらに 2 つの remoteremote_Bとを含めることをお勧めしますremote_C。(そしてホスト上で、対応するベアリポジトリをセットアップします。BC

これにより、で作業しA、何かを使用してコミットをホストにプッシュするだけで済みますgit push remote_B。- リモート リポジトリに小さなフックを追加して、プロジェクトを自動的にビルドし、テストを実行することで、これをさらに自動化できます。

この方法では、プッシュするだけですぐに結果を見ることができ、離れる必要はありませんA


実際の質問については、まず、もう少し意味のあるコミット メッセージを使用することを強くお勧めします。- あなたは通常、特定のトピックに取り組んだり、特別な問題を解決しようとします。- コミットが何であるかについてのヒントを自分に与えてください。

テストが機能するようになったら、 を使用しますgit rebase -i。アップストリームを変更していない限り (これはおそらく指し示してoriginおり、作業が終了した後でのみそこにプッシュします)、git rebase -iまだプッシュしていないコミットを正確に表示し、好きなようにそれらを結合、並べ替え、名前変更することができます。- この時点で、意味のある方法でそれらを組み合わせることができるように、いくつかの意味のあるコミット メッセージがあると非常に役立ちます。

結果に満足したら、最後のステップとしてプッシュをorigin行います。すべて問題ありません。:)

于 2013-11-14T08:46:21.653 に答える