Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

Gitでときどき見る誤解

中央リポジトリへのpushと納品との関係

誤解

ソフトウェアの請負開発を行っており、自分は下請です。ソースコードの管理に、元請が設置したGitサーバを使っています。
Gitサーバにソースをpushすると、元請の管理するサーバにソースコードをアップロードすることになるので、「ソースを元請へ納品した」ということになりますよね?

回答

ブランチ構成にもよりますが、一般的なブランチ構成の場合、Gitサーバにソースをpushしただけではマスタソースは変更されません。そのため、一般にはpushしただけで「納品」とは扱われないと思います。Gitサーバへのpushは、一時ファイルをサーバに置くのと同じ感覚と捉えて問題ないと思います。
その上で、心配であれば元請に確認をしてください(なお、元請が「納品扱いです」と言ってきたら、Gitを効果的に使えていないのではと疑った方がよいかもしれません)。

ファイルの先祖返りの防止

誤解

今はSubversionでソースを管理しているのですが、ときどきソースが先祖返りしてしまって困っています。
Gitでソースを管理したら、先祖返りしないんですよね?

回答

Git自体に先祖返りを防止する機能はありません(もしあったら、変更を元に戻す修正ができなくなってしまいますよね)。
Subversionでも正しく運用すればソースの先祖返りは防止できます。そのため、先祖返りの原因は使っているツールではなく、ソフトウェア構成管理の運用にあると思われます。
ソフトウェア構成管理の運用が間違っていたら、SubversionだろうがGitだろうが先祖返りは起こります。

Gitの位置付け

誤解

GitはSubversionの後継なんですよね?

回答

GitがSubversionを元にしているとか、GitがSubversionの後継となるよう作られたとかではありません。GitとSubversionとの間に直接的な関係はありません。「ファイルのバージョン管理を行う」という用途が同じで、Gitの方が後から出てきたというだけです。そういう意味で「ChromeIEの後継なんですよね?」という質問に似ているかもしれません。
あとは「後継」という言葉の意図によりますが、たとえば御社の技術部門が、以前Subversionを推していたところ、Gitを推すように変わったのなら、御社の中では「GitはSubversionの後継」と言ってもよいかもしれません。