質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • Git

    1285questions

    Gitはオープンソースの分散バージョン管理システム(DVCS)です。

  • SVN

    89questions

    SVNは、CollabNet社が開発したソースコードなどを管理する集中型のバージョン管理システムです。 Subversionとも呼ばれ、CVSの問題点を解決すべく開発された次世代のバージョン管理システムとして開発されました。基本的なコマンドはCVSと共通しています。複数人の開発者が共同でひとつのソフトウェアの開発にあたるときなどに、ドキュメント及びソースコードなどを管理するのに使用されます。

GitとSVNの違い

解決済

回答 5

投稿

  • 評価
  • クリップ 0
  • VIEW 2,536

touwaerio

score 59

これから現場で使うことになり、
一応調べたのですが
Gitの場合は各自でローカルリポジトリをクローンして、
そこにコミットしていき、さらにプッシュする事で
SVNでいうコミットした状態になるというのは理解できました。

ただそれがどうして良いのかがいまいちよくわかりません。
SVNを使用してコミットするのとあまり違いがない気がするのですが、
ローカルリポジトリを作ることによるメリットというのは、
どういったときに感じられるものなのでしょうか?

使ってるうちにわかってくるものなのかもしれませんが、
事前知識として学んでおきたいです。
ご教授を宜しくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

checkベストアンサー

+3

こんにちは。

Gitは高機能で自由度が高く、その分、使い方が難しいです。つまり、学習コストはかかりますが、生産性がより上がります。
SVNは逆で使い方はGitより容易ですが、自由度は低いです。つまり、学習コストはGitより少なくて済みますが、生産性はGit程上がりません。

Gitはローカルにコミットすることでロールバックを容易にできます。そして、プッシュ前にコミット群を整理して分かりやすいコミット履歴へ修正できます。(でも、正直これがかなり難しいのも事実です。)
SVNはそれらを一切できません。

Gitはブランチを手軽に作れます。自分だけのブランチも作れます。
SVNはブランチを作るのは結構手間がかかりますし、ローカルにブランチは作れません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/05 23:20 編集

    ご回答ありがとうございます。
    なるほど、ローカルでコミットしてた分をまとめてプッシュするため
    履歴としてわかりやすくなるんですね。
    確かにSVNだと後から修正してコミットとかしたりすると、
    どれがどの機能分の修正なのかが管理しづらいですね。
    なんとなくGitのいい部分が見えてきた感じがします。

    キャンセル

+3

ローカルコミットのメリットは以下だと思います。
1、開発途中でもコミットできる
2、そのため他に開発者たちに影響が出ない

SVNで開発途中のものをコミットしたら多分他の開発者たちに影響が出て大変なことになると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/05 23:10

    ご回答ありがとうございます。
    なるほど、何かした際の影響範囲を自分の中で抑えられるのですね。
    まだ体感できてないので、わかりづらいですが
    そう考えるとたしかに便利そうですね。

    キャンセル

+2

gitだとローカルにあるうちはコミットを修正できるということが、大きなメリットです。

svnだとコミットした後で「あーっ、このファイルも含めなければいけなかったんだ」ということに気づいても、もう遅いです。別のコミットでファイルを追加するしかありません。それが「別コミットに分けようと思ってたのに、1つのコミットに混ぜてしまった」というミスなら、なお致命的です。もうそのコミットを分割することはできません。

しかしgitであれば、pushする前のコミットは(厳密には違うんですが)上書きや変更、削除ができます。なんならサーバ上にpushした後でも、-fオプションを付けて強制的に上書きすることができます。(関係者に了解を取ってやらないと大迷惑な行為なので気軽にやるべきではありませんが)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/05 23:15

    ご回答ありがとうございます。
    確かにSVNだとコミットした後失敗に気づいても、修正が若干面倒な部分がありますね
    それを事前に食い止められるのは大きなメリットですね。

    キャンセル

+2

既に git を使うことが決まっているのであれば、あるがまま使えばよいだけで、「SVNと比べて~」などは休日の暇な時にでも考えればよいと思います。

ローカルで自分だけのリポジトリを作れると、自由にブランチを作れたり、開発途中の手抜きのコミットを push する前に整理して恥しくない内容に後で整えたりできて、いろいろ便利です。まさに仰る通り、使っていくうちに分かります。

多機能な分、覚えることも多いですけど。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/05 23:17

    ご回答ありがとうございます。
    pushするまで自由にいじれるってのは良いかもですね、
    まだ体感してないんでわかりにくいですが、
    使ってるうちにSVNにはもう戻りたくないとか思い始めそうです(笑)

    キャンセル

+1

Gitをおすすめします。

GitにはSVNにはできないことがあります。
○プルリクエスト
プッシュした成果を利用者or管理者に見てもらえるように要求する機能

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/05 23:12

    ご回答ありがとうございます。
    ソースレビューがしやすくなるということですか、
    確かにSVNと違って、そういった点でわかりやすくなりそうです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Git

    1285questions

    Gitはオープンソースの分散バージョン管理システム(DVCS)です。

  • SVN

    89questions

    SVNは、CollabNet社が開発したソースコードなどを管理する集中型のバージョン管理システムです。 Subversionとも呼ばれ、CVSの問題点を解決すべく開発された次世代のバージョン管理システムとして開発されました。基本的なコマンドはCVSと共通しています。複数人の開発者が共同でひとつのソフトウェアの開発にあたるときなどに、ドキュメント及びソースコードなどを管理するのに使用されます。