Gitをなんとなくで使っていた
はずかしながら
Gitを使い始めたのはいつだったろう?2013年くらいとだいぶ世間に普及してからのことで、お客様の運用に合わせてだったか、Pマーク取得のためだったかで導入した覚えがあります。
コマンドでどうこうするのは使いづらいと思いGUIで操作できる「TortoiseGit🐢」(トータスギット)というソフトを使ってはじめました。ですので、コマンドを使うやり方を知らない。知らないというかどこからコマンドを打つかも知らない状態でした。
そして、社内での開発メンバーは当時5名だったのと、主に小規模ウェブサイト構築が業務だったので定期アップデートリリースとかもなく、また、複雑なブランチなどの管理が必要なかったため、皆でmaster(default)ブランチに更新していく運用でした(ダメゼッタイ!)。これだけでも十分履歴がさかのぼれて有益でした。
しかし改めてGitの使い方を調べると、普通master(default)ブランチは直接更新しないんだそうです。masterはリリースが終わったら差分をマージして現行のリリース状態を保持する役割だそうです。(10年使ってても知らない人もいるよ☺)
※余談ですが「master」(master/slave)という言葉が差別的だということで現在は「main」に変わって来た流れだそうです。Gitのことを調べているとこのふたつの言葉が混在して混乱します。
なんとなくで使ってきましたがそろそろ基本的な部分、正しくあるべき姿を学びなおしたいと思います。
基本的なこと
Gitとは
Gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。
Git以外のバージョン管理ツールでメジャーなのはSubversion、VisualSoueceSafeなど。
要するにみんなで一つのプロジェクトのファイルを更新していくのに、誰がどんな修正を加えたかわかるように、同時に複数人が同じファイルを更新したものをマージしたり、デグレした時に前のバージョンに戻したり、安定版をメンテしながら追加開発を進めたり、みたいなことが簡単にできる仕組みです。
リモートに共有のファイルがあり、それをローカル環境にコピーして修正して、リモートに反映します。
リモートの修正をローカルに反映したり、ローカルから修正したものを反映したりするためにGitクライアントソフトを使います。
どうやってGitを使うのか
Windowsクライアントで使用する場合
TortoiseGitを使う場合でも、コンソールからGitを使う場合でも、仮想環境などを使わずWindowsでGitのコマンドを使うためには必ずGit for Windowsをインストールします。
コンソールにてコマンドでGitを操作する場合
コマンドラインでGitの操作をするクライアントソフトでメジャーなものを調べたところ
- GitBash(Git for Windowsをインストールすると利用できる)
- Windowsの標準コマンドラインツール
- PowerShell
- Cygwin(Unixライクなツール。Cygwin上でGitパッケージをインストールする。)
などがありましたが、次に説明するGUIクライアントでもコマンドラインが使えるものもあります。
GUIでGitを操作する場合
- GitGUI
- Git Extensions
- GitHub Desktop(Github提供のソフト)
- Sourcetree
- Folk
- GitKraken
- TortoiseGit
そもそもGitで管理するリモートファイルはどこにあるのか?
ストレージサービスであればそこにファイルを置くことで使えるようですが、Gitの利用が目的になっているサービスが使いやすいでしょう。
Gitに特化した機能があらかじめあるサービス
Windowsにディレクトリを同期していればGitのストレージとしても利用できる
- Google Drive
- iCloud
- DropBox
実際みんなは何を使っているか?
私の人脈ネットワークを駆使して周囲のエンジニアに調査を行ったところ5名もの人から情報が得られました。
Gitよくわかんない派(主にGUI)
Gitわかる派
SourceTreeは使ったことありますがコマンドに慣れてたので結局使わなくなりました。mac標準のターミナルでzsh か bashを使ってます。
windowsではGitBashを使うときもあります。
でも複雑なコマンドはあまり使わないので正直どこでもいい感じです。
けっこう十人十色な感じですね。(五人五色)
予告
「(2)管理イメージ」では具体的なコマンドを学ぶ前に、どのような管理をしていくのかを整理したいと思います。(Git flowとか、Github flow、Gitlab flowとか)