4

オフラインで作業している場合(サーバーに接続されていない場合)、SVNの作業ディレクトリに変更を保存する場合と比較して、ローカルコミット( commit コマンド)を実行する場合にGITが与える違い(またはむしろ利点)を知りたい

GIT はオフラインで作業する利点があることを読みました。つまり、ユーザーはローカルで何度でもコミットを実行でき、ユーザーがサーバーに接続しているときに変更をリモート サーバーにプッシュできます。すべてのcommitコマンドがローカル ディスクにコミットするだけで、変更を SVN のディスクに保存し (サーバーに接続していない場合)、プロジェクト ブランチにコミットしないのと同じである場合、なぜ有利なのか知りたいです。

私はGITが好きですが、この違いを理解できません。助けてください !!

ありがとう、なやん

4

4 に答える 4

13

シナリオ:オフラインになる前に、レポジトリからラップトップに最新のコードをダウンロードします (飛行機で長時間移動する場合など)。

飛行中にいくつかの変更を行います-ユニットテストを実行し、コードを実行すると、すべてが機能しているように見えます. さらにいくつかの変更を行います - それらをテストしてください。まだ機能しています。あなたは本当に熱心になり、いくつかの重いリファクタリングでさらに多くの変更を加えます. 変更をテストします - すべてが壊れています (たとえば、どこかで間違った仮定をしたため)。

SVN の場合:重いリファクタリングを開始する前の状態を思い出せないため、コードを動作状態に戻すのは難しいでしょう。ネットワークに再びアクセスできるようになると、ラップトップのコードとマスター サーバーとの間で多くの面倒な差分が必要になる可能性があります。その間、あなたは立ち往生しています。

Git の場合:賢明で、ローカル リポジトリが動作状態にあることがわかっているたびに変更をコミットしていると仮定すると、リファクタリング作業を開始する前のコミットにロールバックするのは簡単です。貴重な仕事を維持し、すぐに正しい道を歩み始めることができます。再びネットワークにアクセスできるようになったら、これらの変更を一度に master ブランチにプッシュすれば、すべてがうまくいきます。

于 2012-04-12T12:35:42.943 に答える
5

コミットはファイルをディスクに保存するものではありません。これにはバージョン管理ソフトウェアは必要ありません。

バージョン管理でのコミットは、ファイルの履歴に新しいインクリメントを保存することを意味するため、さまざまな状態をログに記録して回復できます。そして、Git は SVN とは異なります。SVN との違いは、このステップがリモート サーバー通信なしでローカルで実行されるためです。

オフライン モードで SVN を使用している場合、コミットを発行できないため、作業の履歴はログに記録されませんが、ローカル ディスクに保存されます。Git の場合はそうではありません。

于 2012-04-12T12:16:48.123 に答える
2

コミットすることにより、コードをディスクに保存するだけでなく、バ​​ージョン管理に保存します。これにより、コードとプロジェクトの成長に合わせて実際に管理できます。

Git を使用すると、プロジェクトのライフサイクル全体でタスク ブランチを作成することもできます。これにより、(サーバー上で) 常に動作するマスター コード ベース、ローカルで動作するマスター コード ベースを維持し、実装時にこのマスター コードを分岐することができます。新しい機能とこれらすべての間のスワップ。安全であることを確認するためにSVNで行うように、コードをサーバーに「コミット」する必要はありません。

ローカルでコミットして分岐することにより、効果的かつ安全にオフラインで作業できます。SVN では、変更が安全であることを確認するためだけに、これらの変更をサーバーにコミットする必要があります。Git は分散化されています。

Git の機能を調査し、さらに使用することで、あなた自身の質問に答えることができると思います。その後、SVN に戻ったら、Git を使っていればよかったのにと思うでしょう ;)

お役に立てれば。

于 2012-04-12T12:22:40.563 に答える
1

私の頭の上から:

  1. オフライン バージョン管理 (作業の進行状況を保存するためにリモート リポジトリと通信する必要はありません)。
  2. タスク切り替えのための分岐とマージがはるかに簡単になります。
  3. はるかに洗練されたマージ...マージの痛みを軽減します。
  4. チームの他のメンバーに不完全な状態を受け入れるよう強制することなく、作業の進捗状況を追跡します。
于 2012-04-13T12:56:10.797 に答える