Git超初心者がRaspberry PiでGitサーバを構築して、Windowsでcloneするまで! 後編 Git構築
こんにちは。前回に続き、今回は実際にRaspberry Pi(Debian 8.0)でGitサーバ(リモートリポジトリ)を構築し、Windows PCからcloneしてみます。
・Raspberry Piにリモートリポジトリを作成!
まずはRaspberry PiにGitをインストールします。
(Raspberry Pi) apt-get install git
次に、Git専用のユーザーを作成しましょう。今回はgitというユーザーを追加します。
(Raspberry Pi) useradd -m git passwd パスワード
そして、リモートリポジトリを作成したいディレクトリ上で(今回は/home/git)
(Raspberry Pi) cd /home/git git init --bare --shared hoge.git
こうすることで/home/gitにhoge.gitという名前でリポジトリフォルダが作成されます。
--bareは作成するリポジトリをベアリポジトリとして、--sharedはみんな書き込みできるよ~というオプションです。
ベアリポジトリはフォルダ名に.gitを付けるのが慣例のようです。
ベアリポジトリについては前回の記事を参考に!
ls -a
で、".git"というフォルダが作成されていることが確認できると思います。
一旦これでRaspberry Piでの作業は置いておきます。
次にWindowsでの作業に移ります。
・Windows PCでローカルリポジトリを作成!
・Gitのインストール
まずはWindowsにGitをインストールしましょう。
こちらのページよりダウンロードできます。
インストール後、私はCygwinからGitを使用していきますが、コマンドプロンプトでもほぼ同じ内容で作業ができると思います。
・鍵の生成、登録
早速clone!と行きたいところですが、まだやらなければいけないことがあります。
Windowsから先ほど作成したRaspberry Piのgitユーザーでssh接続をできるようにします。
まずはWindows PCのわかりやすい場所に.sshというフォルダを作成し、そこに公開鍵とそれに対応する秘密鍵を作成しましょう。
(Windows) mkdir .ssh ssh-keygen -t rsa -C "コメント" Generating public/private rsa key pair. Enter file in which to save the key (//.ssh/id_rsa): ここに.sshのパスを入れる
すると、指定した.ssh内に「id_rsa」「id_rsa.pub」が生成されることが確認できると思います。この.sshのパスは覚えておいてください。
Raspberry Piに戻り、/home/git(ユーザー名)に「.ssh」ディレクトリを作成し、authorized_keysというファイルを作成しましょう。
そして、「id_rsa.pub」の中身をauthorized_keysへコピーしましょう。
(Raspberry Pi) mkdir /home/git/.ssh cd /home/git/.ssh vim authorized_keys (id_rsa.pubの中身をコピーして保存)
これでsshの為の鍵の登録は完了しました。
Windowsに戻ります。
次に、clone等をする際に行うsshで使用する秘密鍵の場所を設定してあげます。
(僕はこれを忘れていて、
The authenticity of host '' can't be established.
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
こんなエラーにしばらく悩まされましたとさ…)
(windows) vim ~/.ssh/config
で設定ファイルを開き、
Host 任意の名前 Hostname ssh://(さっき作ったユーザー名):(パスワード)@(IPアドレス)(リモートリポジトリのパス) User git IdentityFile "(さっき鍵を作ったパス)" Port 22
このように書き込みます。
IPアドレスの欄には、内部ネットワークから接続する場合はRaspberry PiのプライベートIPアドレスを、外部ネットワークから接続する場合はグローバルIPアドレスを入れましょう。
例えば
Host hoge Hostname ssh://git:password@192.168.0.50/home/git/hoge.git User git IdentityFile "c:/Users/$user_profile/.ssh/id_rsa" Port 22
こんな感じになります。
・いざclone!
これでようやくcloneの準備が整いました。
ローカルリポジトリを作成したいディレクトリへ移動し、以下のコマンドを実行します
git clone ssh://(さっき作ったユーザー名):(パスワード)@(IPアドレス)(リモートリポジトリのパス) (ローカルリポジトリフォルダ名)
例えば私の場合は
git clone ssh://git:password@192.168.0.50/home/git/hoge.git hoge
になります。
これでようやくcloneができましたね!(おそらく空のリポジトリをクローンしたよ!平気?という警告メッセージが出るかと思いますが、無視してください。)
ls -a
で、".git"というフォルダが作成されていることが確認できると思います。
・あとはこっちのモンだ
早速commit、pushしていきましょう!
ワーキングツリーで適当にファイルを作って…(ここではtest.txtを作りました)
(Windows) git status
これで、インデックスに追加されていない変更内容を確認できます。
On branch master Untracked files: (use "git add <file>..." to include in what will be committed) test.txt nothing added to commit but untracked files present (use "git add" to track)
test.txtが変更されてるけど追加されてないよ~って言ってますね
addでインデックスへ追加してあげましょう。
(Windows) git add test.txt
そして
(Windows) git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: test.txt
これで準備完了!commitしましょう。
git commit -m "test.txtを追加"
-mオプションを付けて、スペース空けて後ろにコメントを書きます。主にどのような更新をしたのかを記しましょう。
最後にpush!
初回のpushでは、-uオプションを付けましょう。
git push -u ssh://(さっき作ったユーザー名):(パスワード)@(IPアドレス)(リモートリポジトリのパス) master
無事pushできましたか?
ここで、毎回毎回pushの度にssh://~~を入力していたら大変ですよね。それを省略する機能を使いましょう。
git remote add origin ssh://(さっき作ったユーザー名):(パスワード)@(IPアドレス)(リモートリポジトリのパス)
このように、ホストをoriginという名前に対応させましょう。すると
git push
このように省略が可能になりました。
ちなみに、こう書けるのは対応した名前が"origin"の時のみで、別名を付けた場合は
git push 付けた名前
としましょう。
pullしたい時は、同じように
git pull
もしくは
git pull 付けた名前
するだけです。
・終わった…
これで一通り環境が整ったのではないでしょうか!(書き忘れていることがあるような気がしますが…)
長かった…疲れた…後半はテキトーに書いてました。
ここが違うよ!できないよ!といった意見がございましたら、どしどしコメントをください!
それでは!良いGitライフを!!