はじめに
現状
- 仕事ではSubversionを使用。仕事とは関係なく、プライベートでGitHubを使ってみたい。
- GitHubに登録してみたはいいものの、1年くらい放置。
- 今さらですが、勉強のために、GitやGitHubについてまとめてみようと思った。(自分のメモ用でまとめたので、もし間違ってるところとかおかしいところがあったら教えていただけると助かります)
Git とは
- バージョン管理を行うためのツール。
- リモートリポジトリ(共有リポジトリ)とローカルリポジトリを使い分けて開発を行う。
- 2005年に誕生。もともとはLinuxカーネルのソースコード管理のために、リーナス・トーバルズによって開発された。
- 売り → 高速。作業時にサーバ接続が必要ない。等
GitHub とは
- Gitを利用した、リモートリポジトリ(共有リポジトリ)を提供しているwebサービス。
- ご利用には登録が必要。無料プランの場合、原則全て公開(パブリック)。非公開(プライベートリポジトリ)にするのは有料(現在は$7/月)。
- GitHubのキャラクターは「Octocat」。
Git系サービス
GitHubが有名だけど、Git=GitHubではないです。
事前に知っておいて(知っておいたら)良かったこと
Gitの概要系
-
小飼弾のアルファギークに逢いたい♥ #22 Gitメンテナ 濱野 純
- この記事を読んで、Gitが始まりや、GitとGitHubの違いが理解できました。
-
SubversionからのGit入門(Gitのメリット、Subversionとの違い)
- そもそもなんでSubversionじゃダメなんだろう?詳しく説明されていて分かりやすかったです。
- イメージ : Gitは「分散型」でローカルに保存され、ローカルで構成管理が可能で、主体は「開発者のPC」。Subversionは「集中型」でサーバ上にある1つのリポジトリを利用者が共同で使用し、主体は「サーバ」。
コミットメッセージ系
チケットがあれば refs #チケット番号
でいいと思いましたが、チケットがない場合、コメントに何を書いていいか、どんなことを書けばいいか分からないです。これらの記事を読んだら、なんとなくイメージがつかめた気がします。[コミット種別]要約
でやってみようと思いました。いずれは全て英語で書いてみたいです。
あと、コミットの粒度についても気をつけたいです。
セキュリティ系
他人事じゃない。GitHubって便利だけど、原則公開なので注意したいです。調べるまで、非公開にする仕組み .gitignore があるのも知らなかったです。
ノウハウ?系
-
git 管理をやめる
- git管理をやめるのは簡単なんだなと思いました。やめ方が分かると安心して使えます。
-
Gitのこれやめて!リスト
- 今はまだ一人だけで使ってるけど、参考になりました。
学習サイト系
学習本
はじめての GitHub
目標
とにかく使ってみる。始めに出てくる以下のコマンドを理解する。
echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/ユーザ名/xxx.git
git push -u origin master
GitHub のアカウント登録
GitHubから登録。
GitHub のレポジトリ作成
右上の + をクリックして、「New repository」を選択。「Repository name」を入力して「Create repository」をクリックして作成。
インストール
環境に合わせてインストール。下記はAmazon Linuxの場合。
yum -y install git
バージョン確認
git --version
初期設定
Git で管理したいディレクトリを作成→移動。
mkdir ディレクトリ
cd ディレクトリ
Gitを使う宣言
.git フォルダが作成される。
git init
Gitで管理したくないものはここに記述。
vi .gitignore
ユーザー名・メールアドレスの設定
事前に GitHub で登録が必要。
git config user.email メールアドレス
git config user.name ユーザ名
-
--global
オプションをつけてgit config --global user.name ユーザ名
のようにすると、そのPC上で行なう全ての操作に対して常にこの情報を使うようになる。
config 設定の確認
git config --list
git config 確認したい設定
-
--list
で全ての設定を確認可能
config 設定の削除
git config --unset 削除したい設定
コミット準備
事前確認
ファイルの状態を確認
git status
- ちなみに、ここで
git checkout -- ファイル名
とすると変更前に戻すことが出来る。
差分を確認(ステージングエリアに上げる前)
git diff
- add後(ステージングエリアに上げた後)は
git diff --cached
で確認出来る。
管理対象に追加
管理対象に追加=「ステージングエリアに上げる」という言い方をすることもある。
git add 管理対象にしたいもの
-
git add .
今のディレクトリより下のものを全て管理対象に追加。
add後確認
ファイルの状態を確認
git status
差分を確認
git diff --cached
コミット
コメント付きでコミット
git commit -m "first comment"
コミット後の確認
コミットログを確認
git log
-
git log --oneline
1コミットにつき1行だけのコンパクト表示で見れる。 -
git log -p xxxxxx
どこが変更されているか詳細が見れる。 -
git log --stat
どのファイルがどれくらい変更されてるかざっと見れる。
origin 登録
共有リポジトリを登録。
https://github.com/xxx/xxx.git に「origin」というあだ名をつけるようなイメージ。
git remote add origin https://github.com/xxx/xxx.git
git remote add [name] [url]。
origin は共有リポジトリのこと。レポジトリの場所(URL)の別名。
共有リポジトリに反映
ローカルでの開発内容を共有リポジトリに反映させる。
git push -u origin master
ユーザ名やパスワードを聞かれるので入力。
origin は共有リポジトリのこと。レポジトリの場所(URL)の別名。
master はブランチ(枝分かれ)の名前。ちなみに master は大事なブランチなので、個人利用では自由にpushしても大丈夫だけど、チームでの場合はmasterには通常pushしないので注意。ブランチはGUIから確認可能(<>Codeタブのすぐ下に n branches と出ていて、クリックすると詳細が見れる)。
「-u」オプションについて
省略の呪文。git push -u origin master とすると、次回から git push だけで引数に指定した origin master で勝手に push してくれる。
初めてじゃない GitHub (随時更新予定)
今の所まだこの程度です。。必要に応じて身につけていきたいです。随時更新していきたいです。
目標
とりあえずGitHubを使ってみる。慣れる。
masterを更新したい時
追加→確認→コミット→プッシュ。
git status
git diff
git add .
git status
git commit -m "コメント"
git push origin master
ブランチ切って更新→マージしたい時
ブランチ=「枝分かれ」の意味。複数のバージョンを同時に開発したいときに使うと便利らしい。
# ブランチ作成
git branch ブランチ名
# ブランチ確認 (頭に * のついているのが現在のブランチ)
git branch
# ブランチ切り替え(移動)
git checkout ブランチ名
# 変更(ブランチ先にコミットしたりする)
git status
git diff
git add .
git status
git commit -m "コメント"
# リモートにPush
git push origin ブランチ名
##### 区切りが良くなって、マージしたくなった時 #####
# マージ先(master)に移動
git checkout master
# さっき作成したブランチをマージ先にマージ
git merge ブランチ名
# ログ確認(さっきのブランチの変更内容がマージ先に反映されているか確認)
git log
# Pushする
git push origin master
# マージ後に削除
git branch -d ブランチ名
git push origin :ブランチ名
その他
helpを見たい時
git help
- 更に詳細が知りたいときは
git help [config等]
またはgit [config等] --help
のようにすると出てくる。
共有リポジトリをローカルに持ってきたい時
インストールなどでお馴染みのコマンド。
git clone https://github.com/ユーザ名/xxx.git ローカルディレクトリ
変更を取り込みたい時
ローカルリポジトリのmasterブランチにリモートリポジトリoriginのmasterブランチを取り込む。
git checkout master
git pull origin master
感想
GitHub歴1週間
- 便利。バージョン管理が簡単に出来るし、webでも見れる。ホームページやブログのような感じで楽しい。
- GitHub の使い方系のサイト見て、見よう見まねでコマンドを打てば、簡単にファイルを管理出来た。
- 実際に使ってみたり、自分でまとめてみたり、調べてみないと何やってるかよく分からなかった。GitHub がちょっと分かるようになった気がして好きになった。
- プロジェクトや人を登録して行動を追えたり、自分がどれくらい作業したかグラフで分かったりするのが面白い。
- 「分散型」のメリットはまだ実感できていない。