はじめてのGitHub

とあるコミュニティでGitHub使いそうなので、遅ればせながらアカウント作ってみた。
とりあえず本番で使う前にちょっと練習をしてみる。

まずは、新しいリポジトリを作成。
自分のアカウントのホーム画面にある「Repositories」タブの右の方にある「New」という緑色のボタンを押す。

「Repository name」にリポジトリ名を入力。今回は練習用なので「GitHub_Practice」とでもしておく。
「Description」は任意なので入れなくてもいいけれど、とりあえず簡単に説明を入れておく。
タイプは無料アカウントなので当然「Public」しか選べない。
READMEや.gitignoreやライセンスはとりあえず作らなくていいのでデフォルトのまま(チェックなし、None)。
最後に「Create Repository」を押せばできあがり。

次に、作ったリポジトリをローカルにcloneする。
解説サイトなどを見ていると、先にローカルにリポジトリを作ってからpushする方法がよく紹介されているが、cloneした方が手っ取り早いような感じがする。(何か不都合があるのかは現時点で不明。とりあえず、この方法でやってみる。)

$ git clone https://github.com/furipon/GitHub_Practice.git
Cloning into 'GitHub_Practice'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

ちゃんとできたかステータスを見てみる。

$ cd GitHub_Practice/
$ git status
On branch master

最初のコミット

nothing to commit (create/copy files and use "git add" to track)

ちゃんとできた様子。

お次は適当にファイルを作ってリポジトリに登録。
ファイル作る→add→commit→pushの順。
まずはcommitまで。

$ echo "# GitHub_Practice" > README.md
$ git add README.md 
$ git commit -m "README.mdを追加"
[master (root-commit) 1812759] README.mdを追加
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

これでローカルリポジトリにcommitするところまでできた。
次はpushだが、pushする前にローカルリポジトリの内容でpushしていないものを確認するコマンドで見てみる。

$ git log --branches --not --remotes
commit 1812759eee2e630add3afa964a7cfc6ea6e35caf
Author: ***** <*****@take-f.net>
Date:   Thu May 28 23:06:56 2015 +0900

    README.mdを追加

先ほどcommitした内容が表示された。
続いて、これをpush。

$ git push -u origin master
Username for 'https://github.com': *****
Password for 'https://*****@github.com': 
Counting objects: 3, done.
Writing objects: 100% (3/3), 243 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/furipon/GitHub_Practice.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

無事にpushできた様子。
ブラウザでリポジトリのURLを見ると、ちゃんとREADME.mdができている。

pushするときにUsernameとPasswordを求められたが、解説サイトにはそのような記載はなし。もしかしてSSH鍵を登録しておけばいいのかな?次回試してみることにして、今日はここまで。

サーバのGitにローカルPCからsshで接続

レンタルサーバにインストールしたGitにリポジトリを作成して、ローカルのPCからsshで接続してみる。

まず、初期設定としてユーザーを登録する。

git config --global user.name "ユーザー名"
git config --global user.email "メールアドレス"

次にリポジトリの作成。

$ mkdir git
$ cd git
$ mkdir sandbox.git
$ cd sandbox.git/
$ git init

何もないとよく分からないので、適当にファイルを作って登録する。

$ date > date.txt
$ git add date.txt
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached ..." to unstage)
#
#       new file:   date.txt
#
$ git commit -m "Test"
[master (root-commit) f013bcb] Test
 1 file changed, 1 insertion(+)
 create mode 100644 date.txt
$ git status
# On branch master
nothing to commit (working directory clean)

ローカルPCにTortoiseGitをインストールする。(ランゲージパックも)
でも、その前にmsysgitが必要。
インストーラーを使ってインストールするだけなので手順は省略。

なお、TortoiseGitのサイトに「msysgit 1.8.3 と TortoiseGit 1.8.3 を一緒に使うな」と書いてあるので、とりあえずmsysgitは1.8.1.2を使用(なぜか1.8.2.xはない)。

クライアントPC上の適当なフォルダで右クリックし、「Gitクローン(複製)」を実行。
右クリックメニュー

ダイアログに接続情報を入力して、OKをクリック。
Gitクローン

SSHのパスワードを求められるので入力。
パスワード入力

サーバのリモートリポジトリからローカルリポジトリが作成された。
Gitクローン成功 同期されたファイル

以下の点でかなりハマった。
①クローンの作成時に「bash: git-upload-pack: command not found TortoiseGit」というエラーが発生して失敗
調べてみるとサーバ側でgit-upload-packにパスが通っていないことが原因とのこと。
しかし、普通にsshで接続した際には間違いなく~/local/bin/にパスが通っている。

試しにTortoiseGitではなくEclipseのEGitでやってみるが、同じエラーが発生。
途方に暮れていたところ、以下の情報に辿り着く。

EGit fails with “git-upload-pack: command not found”

要するに、.bash_profileにPATHの設定を書いても読んでくれず、.bashrcに書かないといけないらしい。
.bashrcにPATHの設定を書いたところ、解消した。

②クローンの作成時に「’/git/sandbox.git’ does not appear to be a git repository」というエラーが発生して失敗
①が解消したと思ったら、さらにエラーが。
google先生もよく分からない様子。
エラーメッセージをジーっと見つめていたら閃いた。
「/git/sandbox.git」を探しに行っているようだが、これは「~/git/sandbox.git」ではなく、本当に「/git/sandbox.git」を探しに行ってしまっているのではないかと。
試しにURLを「ホスト名/home/xxxxx/git/sandbox.git」に変えてみたら解消した。

レンタルサーバにGitを導入

レンタルサーバにGitを導入する。

<参考サイト>
さくらのレンタルサーバ(スタンダード)にGitをインストール
さくらレンタルサーバーにGitをインストールする改良版

$ cd ~/tmp/
$ wget --no-check-certificate https://www.kernel.org/pub/software/scm/git/git-1.8.3.2.tar.gz
$ tar zxf git-1.8.3.2.tar.gz
$ cd git-1.8.3.2
$ ./configure -prefix=$HOME/local
$ gmake
(省略)
gmake: *** [git-credential-store] Error 1

エラーが出て失敗。
「gmake: *** [git-credential-store] Error 1」でググったところ、以下のサイトにバージョンが新しすぎてエラーになる的な情報を発見。1.7.x系に落として再チャレンジ。

<参考サイト>
Git導入へ(1)~さくらインターネットに。

$ wget --no-check-certificate https://git-core.googlecode.com/files/git-1.7.12.4.tar.gz
$ tar zxf git-1.7.12.4.tar.gz
$ cd git-1.7.12.4
$ ./configure -prefix=$HOME/local
$ gmake
$ gmake install
$ git --version
git version 1.7.12.4

無事成功。
ちなみに、Redmineのインストール時に$HOME/local/binにPATHを通してある。
もしPATHが通っていない場合は$HOME/.bash_profileに設定しておく。