【Windows10】GitBashでGitのリモートリポジトリを作る方法

市場ニーズ的な意味合いから、Webエンジニア界隈で大変人気のあるgitを勉強兼ねて実用することにした。
一人で作る分にはバージョン管理ツールって必須レベルではないんだけど…。

バージョン管理をするにあたって、保管場所であるリモートリポジトリ(gitではSVNで言うところの中央リポジトリのこと)を作る必要があるが、おおむね次の方法がメジャーであることがわかった。

  1. GitHubにてインターネット上に作成する
  2. 自分用サーバにGitLabGitBucketを入れて作成する
  3. 自分用サーバに本家Gitを入れて作成する

最終的に「本家Git」に決めたのだが、

  1. そこに至るまでの調査結果
  2. 本家Gitをインストール
  3. リモートリポジトリを実際に作ってみる

これらを本記事にまとめた。

(2017/04/10追記)
現在ではコマンドラインでGitを操作することは無くなり、全てGUIのTortoiseGitでやるようになりました。
エクスプローラー上のアイコンでひと目で新旧状態が分かるのが手放せません。
特にTortoiseSVNを使っていた人(=俺)にはおすすめです。
とはいえこうやって一度手を動かしとくと、原理が分かって良いですよ。
GitBashだけ使ってても便利ですしね。
スポンサーリンク

リモートリポジトリ作成方法の調査

【方法1】GitHubでインターネット上に作成

GitHub is where people build software. More than 20 million people use GitHub to discover, fork, and contribute to over 55 million projects.

メリット

  • バグ管理機能・SNS・プルリクエストなど開発記録を残す仕組みが標準装備されている
  • 開発機が複数あってもインターネットを通して簡単に同期できる
  • なんか意識高そう
  • キャラクターのタコネコicon_github-octocatがかわいい

デメリット

  • 無料利用の場合、プライベートなリポジトリが作成できない
    自分の糞ソースが全世界に公開され、下手すると知らん奴から「Yo! 修正させてくれ」なんて声かけられちゃったりしたら面倒くさい
  • そこまで卑屈にならないにしても、GitHubに置くということは「オープンソース」にすることと同義なので、今まで「フリーウェア」などと呼んでいたものを置くためにはライセンスについて少しは熟考する必要があり、面倒くさい
    自分の感覚で「フリーウェア」は「自由に使ってもらいたいが、作者としてのワガママ・権利は主張させてもらいたい」という曖昧なものだから
  • バージョン管理をやるからには全ソースを一元管理したいが、将来的に仕事で表に出せないものを作ることになったとき困る
  • ツール程度のものを一人でシコシコ作る上ではSNS等のドキュメント機能はそんなに必要ない

【方法2】自分用サーバにGitLabやGitBucketを入れて作成

Code, test & deploy with GitLab. Everyone can contribute!
gitbucket - A Git platform powered by Scala with easy installation, high extensibility & github API compatibility

メリット

  • GitHubの利便性はそのままに、プライベートなリポジトリが作成できる
  • 自分専用のサーバを使うので、GitHub社が潰れても行き場に困るようなことはない

デメリット

  • サーバの管理が面倒くさい
  • やっぱり、現時点でSNS等のドキュメント機能はそんなに必要ない

【方法3】自分用サーバに本家Gitを入れて作成

メリット

  • 構成がシンプルに済む
  • どうせGitの仕組みそのものの勉強が必要なので基本を抑えなきゃいけない
  • 彡(^)(^)公式やけ潰れるこたないやろ!

デメリット

  • 温室育ちWindows信者の俺にはCUIは敷居が高い

【調査結果】本家Gitに決定

結局のところ、自分のニーズとしては

  1. バージョン管理機能だけあればいい
  2. サーバもクライアントもWindows機かつLANで使用するので、Windowsファイル共有で繋がれば十分
  3. あんまり余計なことは覚えたくない

つまりシンプルなもので十分だったため、本家のコマンドラインツールさえあればいいことがわかった。
本当はコマンドなんか打ちたくないが…。

本家Gitのインストール手順

構築イメージ

最終的にこんな構成で使いたい。
いずれの機械もWindows10を使っている。

ファイルサーバへのインストール手順

まずはファイルサーバ(alicia)にGitをインストールする。

Gitをダウンロード

  1. https://git-scm.com/を開き、「Downloads」をクリック。
  2. 「Windows」をクリック。インストーラ実行ファイルがダウンロードされる。

インストーラー実行

  1. ダウンロードされた実行ファイルを起動
  2. 「Next」
  3. 「Next」
  4. 「Next」
  5. 「Next」
  6. ここちょっと大事。
    git系のコマンドをMS-DOSプロンプト/PowerShellでも使えるようにするか否か。

    Use Git from Git Bash only 環境変数PATHを弄らない。
    安全だが、MS-DOSプロンプトでgit系のコマンドが使えない。
    (bashでしかgit系のコマンドが使えない)
    Use Git from the Windows Command Prompt デフォルト。
    環境変数PATHにgit系のコマンドを追加する。
    MS-DOSプロンプトでもbashでもgit系のコマンドが使えるようになる。
    自分はこれを選びました。
    Use Git and optional Unix tools from the Windows Command Prompt 環境変数PATHを弄る。
    且つfindsortをUnix系のものに置き換える。
    既存のバッチ処理などが動かなくなる可能性があるので、Unix党以外は選ばないほうがいいだろう。

  7. ここもちょっと大事。改行コードの変換に関する設定。
    Windows文化の「改行」は[CR][LF]だが、Unix/macOS文化では[LF]なので、OSが混在する環境では色々ハマるんですよね。

    Checkout Windows-style, commit Unix-style line endings チェックアウト時は[CR][LF]に変換。
    コミット時は[LF]に変換。
    →リポジトリ全体としては修正が進むと[LF]に統一されてゆく
    Checkout as-is, commit Unix-style line endings デフォルト。
    チェックアウト時に変換しないが、コミット時は[LF]に変換。
    →リポジトリ全体としては修正が進むと[LF]に統一されてゆく
    Checkout as-is, commit as-is チェックアウト時、コミット時共に変換しない。
    自分はこれを選びました。下手に変換されると逆に混乱するので。
    ドザ的にはWindowsでCGIやシェルスクリプトを作ってLinix上で実行する場合に良くハマります。
    gitが変換したのか? エディタが変換したのか? FTPクライアントが変換したのか? どれが原因だ?(^^;#

  8. エクスプローラの右クリックメニューで「Git Bash」を選んだ時のコンソールをどちらにするか。
    Use MinTTY デフォルト。
    MSYS2(Unix互換環境)のターミナルエミュレータを使う。
    今はどうか知らんが、昔触った時は漢字周りが話にならんレベルでボロボロだったんだよなぁ…。
    Use Windows’ default console window 自分はこちらを選んだ。MS-DOSプロンプト用のウインドウを使う。
    漢字を含むファイルを扱う場合は鉄板じゃないでしょうか。間違った認識だったら教えて下さい。

  9. 「Next」
  10. インストール開始
  11. 「Finish」

リモートリポジトリの作成

ファイルサーバ(alicia)上にリモートリポジトリを作成する。

こんなディレクトリ構成でやってゆく。

gitというディレクトリの中にプロジェクトやアプリケーション別にリポジトリを増やしていくことにする。
リポジトリ名の末尾に.gitと付けるのは慣例らしい。

以後、F:\dev\git\efStat.gitを作成する前提で進める。

フォルダ作成

予めリモートリポジトリにしたいフォルダを作る。

ここでは、F:\dev\git\efStat.git

コンソール(Git Bash)を開く

エクスプローラでF:\dev\git\efStat.gitを開く。

フォルダ名を右クリックして「Git Bash Here」を選ぶ。

Git Bashコンソールが開く。

コマンド実行

コマンドを入力。

こうすることによりgitでの管理が開始される。
この組み合わせはおまじないレベルみたい。

引数 意味
init リポジトリを作成する。
--bare ベアレポジトリとする。
管理ファイルのみを置く。
=ワークファイルは置かない
=コミットできない
=SVNでいうところの中央リポジトリの扱いになる
--shared=true リポジトリを共有する。

(実行結果)

Windowsファイル共有でデータのやり取りをするだけなら、これだけで完成。

任意:デーモンの立ち上げ

Windowsファイル共有ではなく、gitプロトコルを使ってやり取りする場合はさらに待ち受け用デーモンを起動する。

…うーん、SMBプロトコルが通らない出先から自宅につなぐとか、Windowsファイル共有が使えないOSからつなぐ、とかですかね。

俺にとっては全く関係ないのでピンと来てませんが、一応立ち上げました。

デーモン経由で公開できるように指示する

リモートリポジトリ用ディレクトリの直下にgit-daemon-export-okという名前の空ファイルを作ることで設定する。

デーモンを立ち上げる

このとき、ファイアウォールのポートを開くか聞いてくるので許可する。

作業完了

以上でリモートリポジトリの作成作業は完了。

まとめ

以上でサーバ側の準備(リモートリポジトリ)ができた。

近日中にクライアント側の準備手順を書きます。

関連記事

Blog内から、Web開発に関連する記事をまとめています。レンタルサーバネタエックスサーバームームードメインで取得したドメインを使う方法ドメインは、Webサーバーはを使っています。ムームーで取ったドメインは同系列のでしか使えないなんてことは
Git Bashで漢字が文字化けするので、ロケールを設定して日本語を正しく表示できるようにした。
VagrantとVCCWのインストール手順の説明。ホストOSはWindows10 Pro。 VCCWはVagrantとVirtualBoxを組合せて動くWordPress開発用の仮想マシンです。
VagrantのVCCW仮想マシンを増やす場合の操作方法の説明。