GitHubを始める為に - その4.GitHubを触ってみる

GitHub


引き続き2つ目のカテゴリ、GitHubを触っていきます。

  • Git
  • GitHub
  • Gist

おさらい

実際にGitHubを触る前に概念のおさらいをしましょう。

Remote Repository / Local Repository

GitHubを始める為に - その2.Gitを触ってみるGitHubを始める為に - その3.GitHub?で経験した事を踏まえ、この2つは以下の様に表せます。

Repositories
Remote Repositories GitHub
Local Repositories 自分のPC

commit / push

commitとpushは以下の様にまとめました。

コマンド 説明
commit ファイルの追加や変更の履歴をRepositoryに保存すること
push ファイルの追加や変更の履歴をRemote Repositoryにアップロードするための操作

branch

branchの運用に関しては奥が深い(正解がない)ので、基本概念は公式の資料を読むと一番分かりやすかったです。

Pro Git Book3章.Git のブランチ機能を読みましょう。

時間のないor難しい人はこの一文がなんとなく分かっていれば大丈夫。

ブランチとは、開発の本流から分岐し、本流の開発を邪魔することなく作業を続ける機能のことです。

いざ、体験GitHub

では、早速前回作成したGitHub上のRepository、testrepoを触っていきましょう。

Local PCでの準備

ターミナルで作業環境を整えます。

まずは作業ディレクトリの作成

$ mkdir githubtest
$ cd githubtest
$ git init
Initialized empty Git repository in /***/***/***/githubtest/.git/

この$ git initコマンドでカレントディレクトリをGit Repositoryにしていします。
そしてGitHubで管理するファイルの作成です。

$ vi mojatest.html

内容はこんな感じの物を用意してみました。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>mojatest</title>
</head>
<body>
   mojage is testing now.
</body>
</html>

Local Repositoryへcommit

まずは$ git statusコマンドで現状を確認しましょう。

$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    mojatest.html

nothing added to commit but untracked files present (use "git add" to track)

mojatest.htmlがトラッキングされてないから、$ git addして下さいって出ましたね。
では

$ git add mojatest.html
$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   mojatest.html

Indexに登録されました。
では、IndexとLocal Repositoryの差分を見てみましょう。
$ git diff --cachedです。

$ git diff --cached
diff --git a/mojatest.html b/mojatest.html
new file mode 100644
index 0000000..9172e66
--- /dev/null
+++ b/mojatest.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>mojatest</title>
+</head>
+<body>
+   mojage is testing now.
+</body>
+</html>

まだLocal Repositoryには反映されていないことがわかりますね。
そして$ git commit

$ git commit -m "add mojatest.html"
[master (root-commit) b08f53a] add mojatest.html
 1 file changed, 10 insertions(+)
 create mode 100644 mojatest.html

成功!
でも一応確認します。

$ git status
On branch master
nothing to commit, working directory clean

問題なさそうですね。

GitHubのRemote Repositoryへpush

前回作成したtestrepoをRemote Repositoryとして登録します。

$ git remote add origin https://github.com/mojagehub/testrepo

最後に$ git pushコマンドでGitHub上のRemote Repository testrepo上へ送り出します。

$ git push origin master
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 616 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To https://github.com/mojagehub/testrepo
   47012c4..7e64796  master -> master

成功です!
もし、以下の様なエラーが出た場合は、Remote Repository上にREADMEファイル等がある為に先に$ git pullコマンドでRemoto Repositoryの情報を引っ張ってこいと言っているので、先に$ git pullしましょう。

! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ‘https://github.com/[account]/[reponame]’
hint: Updates were rejected because the tip of your current branch is behind

$ git pull origin master

$ git pushにせよ$ git pullにせよ、初回のGitHubとの接続時はユーザ/パスワード認証があります。

GitHubの上で確認

ちゃんとmojatest.htmlがpushされてますね!
今回はここまで。