27

基本的に、変更をプッシュしたり、ブランチを切り替えたりせずに、変更をステージングしたいと考えています。これによりcommit、適切な停止ポイントにいるときにいくつかの作業を行うことができ、その後、同じブランチで作業を続けることができます。もし失敗しても、revert新しい変更を加えれば、またできるcommit

これらの変更を追跡するために SVN で機能ブランチを作成できることはわかっていますが、同じブランチ/トランクにとどまりながらそうしたいと思います。git stashSVNにはその機能がないようですが、同等のものでも十分です。

4

3 に答える 3

38

分散バージョン管理のまさにポイントは、後でアップストリーム リポジトリとマージできるローカル コミットのこの機能です。SVN は配布されておらず、実行できません。主な障害は、SVN の線形リビジョン番号付けです。これは、すべてのクライアントが各変更セットに対して新しい識別リビジョン番号を取得する必要があることを意味します。リビジョン番号を「割り当て」、後でそれを使用すると、あらゆる種類の競合状態が発生するため、「コミット」および「プッシュ」アクションは、SVN およびすべての非分散バージョン管理システムではアトミックです。

そうは言っても、ジョーが示唆したように、gitのSVNフロントエンドは良い選択です。SVN がローカルの個々のコミットを認識しないようにし、「プッシュ」が 1 つの大きな SVN コミットに変換されます。

于 2011-12-27T22:17:16.107 に答える
30

設計上、SVN はそうではありませんが、git のgit svnコマンドを SVN のフロントエンドとして使用できます。SVN リモートからプッシュ/プル作業を行うことができますが、ローカルで git を使用するため、SVN リポジトリにプッシュせずにローカル コミットを行うことができます。

次のようなものが役立つかもしれません: http://www.viget.com/extend/effectively-using-git-with-subversion/

于 2011-12-27T21:40:03.650 に答える
2

これを行うために quilt を使用できるかもしれませんが、svn に quilt キューの一部のみをコミットしたい場合は、ややこしくなり始めます。

于 2011-12-27T21:56:30.247 に答える