42

マニュアルによると、git dcommit「gitのコミットごとにSVNにリビジョンを作成します。」しかし、複数のSubversionリビジョンを回避する方法はありますか?つまり、svn commit?を実行する前にgitにすべての変更をマージさせることです。

4

3 に答える 3

34

gitでブランチを操作する場合はgit-merge --squash、git内でそれを行うことができます。次に、その1つの押しつぶされたコミットをSVNにプッシュできます。

もちろん、小さなコミットがたくさんあるので、なぜそれらを潰したいのですか?

于 2008-10-01T16:43:10.010 に答える
27

このコマンドgit rebase -iは、これとそれ以上のことを行うことができます。このコマンドは非常に強力なので、友達になるとよいでしょう。

構文は次のとおりですgit rebase -i <commit ID>。これにより、テキスト エディターが表示され、指定された ID まで (含まない) すべてのコミットを変更するためのオプション (および指示) が表示されます。

たとえば、前の 5 つのコミットを変更するには、次のようにします。

git rebase -i HEAD~5

または、SVN ブランチが「svn/trunk」と呼ばれる場合、この構文も適切です。

git rebase -i svn/trunk

すると、テキスト エディタ ウィンドウがポップアップします。すべてを押しつぶすには、最初の行以降のすべての行の最初の単語を「pick」から「squash」に変更します (これが紛らわしいと思われる場合は、実際に見てみるとよくわかります)。次に、エディターを保存して閉じます。その後、押しつぶされたコミットのコミット メッセージを編集する機会があります。

でできるその他のことにはgit rebase -i、コミットの並べ替え、さまざまな方法でのコミットの押しつぶし、コミットの削除があります。

私はこのコマンドを常に使用しています。これは Git の優れた機能です。

于 2008-10-02T18:01:41.983 に答える
7

Ryan Tomaykoは について少し書いておりgit rebase -i、次のように述べています。

…[それは] git commit --amend が酸に飛び乗ってチェーンソーを持っているようなものです。完全に正気ではなく、非常に危険ですが、まったく新しい心の状態を暴露することができます。ここでは、本来あるべきよりも簡単で直感的な方法で、既存のコミットを編集、圧縮、並べ替え、分解、および注釈を付けることができます。

私は頻繁に git にコミットする傾向がありますが、すべてのコミットを svn にコミットする必要はありません。私は今、いくつかを並べ替えて、より論理的なコミットユニットにまとめようとしています。

于 2008-12-13T21:00:11.703 に答える