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

Windowsでの開発

市場ニーズ的な意味合いから、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でインターネット上に作成

Build software better, together
GitHub is where people build software. More than 40 million people use GitHub to discover, fork, and contribute to over 100 million projects.

メリット

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

デメリット

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

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

The first single application for the entire DevOps lifecycle - GitLab
“From project planning and source code management to CI/CD and monitoring, GitLab is a complete DevOps platform, delivered as a single application. Only GitLab ...
GitHub - gitbucket/gitbucket: A Git platform powered by Scala with easy installation, high extensibility & GitHub API compatibility

メリット

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

デメリット

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

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

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)上にリモートリポジトリを作成する。

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

F:.
└─dev
  └─git
     ├─efStat.git
     ├─ScraperTest.git
     ├─VideoTitleGetter.git
     └─web.ygkb.jp.git

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

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

フォルダ作成

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

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

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

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

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

Git Bashコンソールが開く。

*****@alicia MINGW64 /f/dev/git/efStat.git
$

コマンド実行

コマンドを入力。

git init --bare --shared=true

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

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

(実行結果)

*****@alicia MINGW64 /f/dev/git/efStat.git
$ git init --bare --shared=true
Initialized empty shared Git repository in F:/dev/git/efStat.git/

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

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

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

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

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

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

cd efStat.git
touch ./git-daemon-export-ok

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

デーモンを立ち上げる

git daemon --export-all --enable=receive-pack --base-path=/F/dev/git

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

作業完了

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

まとめ

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

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

関連記事

Web開発に関する記事まとめ
ブログ内から、Web開発に関連する記事をピックアップしています。
Git Bashでの漢字の文字化けの直し方
Git Bashで漢字が文字化けするので、ロケールを設定して日本語を正しく表示できるようにした。
VCCWでWordPress開発環境を作る方法
VagrantとVCCWのインストール手順の説明。ホストOSはWindows10 Pro。 VCCWはVagrantとVirtualBoxを組合せて動くWordPress開発用の仮想マシンです。
VCCW仮想マシンを増やす方法
VagrantのVCCW仮想マシンを増やす場合の操作方法の説明。
タイトルとURLをコピーしました