gitに慣れるためのgit入門
初めに
-
慣れない人 <= 私。しつこいほど事前、事後確認しています。
-
優先順位として、
-
masterブランチでリモートリポジトリまでとにかくあげる(一連の流れを覚える)
-
add, commitの前後に確認できるコマンドを覚える
-
add, commitを間違った時の取り消し方を覚える
=> add, commitが制御できる -
branchの仕方を覚える(後は、リモートリポジトリからローカルに持っていきたいときの仕方を覚える)
がよいかな、と思います。
一般的な書籍とかだと、add -> commit (-> remote add origin) ->pushの流れの後に、branchの説明に入るのが多い気がします。個人的には、間違った時や、自分が何をadd, commitしたかを確認できたほうが安心しますし。
初めてのgit
- コマンドのフローについては、Gitポケットリファレンス-岡本-隆史
の付録のチートシートがかなりわかりやすいと思います。以下、自分が説明することは事前、事後確認しながらリモートリポジトリにpushするまでのプロセスです。
ローカルリポジトリにコミットするまで
自分がはまった所
- 容量制限
- リポジトリサイズには物理的な上限は設定していない
- ただし1GB以下に収めるようにという要請(お願い?)がある
- それを超えると注意(要請)メールが送られる場合あり
- その中の単一ファイルには100MBまでという物理的上限がある
- 50Mを超えるファイルがあると警告を出す
- 100Mを超えるファイルは受け付けない
- githubのホームページで新しくリポジトリを作成しわすれていた(後述)
バージョン管理の初回
git init
git add
ステージングエリア(index) ... コミット前の調整ができる場所
実際にコミットが作られてしまう前に、本当に作りたいコミットを練り上げる1。
# git initしたディレクトリに移動してください。(.gitフォルダがある場所)
# 事前に大きすぎるファイルがありそうなときは、確認(100KB以上の物を抽出)
# du : ディレクトリ内のファイル容量を表示する。 (-a:ファイルも。 -k:KB表示)
du -ak | gawk '{if ($1 > 100) print $0}'
# lsで事前に確認
ls directory-name/file*
#directory-nameのfile*をステージングエリアに挙げる
git add directory-name/file*
#もしくは対話的にaddしていく
git add -i directory-name/file*
# もしくは、一つ一つのファイルに対して、ステージングエリアに載せるかどうか、選択もできる
git add -p
#事後確認 (modified と untrackedが表示される)
git status
# addするごとにgit statusで作業内容を確認すると安心ですね!
git commit
git addした後は、確認を取ってcommitします。
#もう一回事後確認 (modified と untrackedが表示される)
git status
#事後確認したら、commit
git commit -m "changed"
#commitの事後確認2個前までのcommitを確認
git log --stat -2
リモートリポジトリへの送信
- origin ... リポジトリの場所(URL)の別名 (だいたいoriginで構わない)
- master ... ブランチの名前
まずは、忘れずに、githubのホームページで新しくリポジトリを作成しましょう!!(僕は初回この操作を忘れてssh周りのエラーでものすごく苦しみました((+_+))
その後、
#初回は、originがどこのurlを指しているか紐づけを行う。2回目以降は不要
git remote add origin https://github.com/username/repository.git
# リモートレポジトリの確認
git remote -v
# -uはorigin(ローカルリポジトリ)とmaster(ブランチ)の対応付け
# (初回のみで良い。対応付けがすんだら、git pushのみでOK)
git push -u origin master
Note) ちなみに1commitに1pushである必要はありません。数度add->commitしてできたコミットをまとめてpushすることも可能です。
間違ってコマンドを打ってしまった時の修正方法
- 間違ったとき焦るよね。
git addの修正
#事後確認 (modified と untrackedが表示される)
git status
# ステージングエリアに乗せてしまったファイルをステージングエリアから外す。
git reset *
git commitの修正
# commitの事後確認2個前までのcommitを確認
git log -2
# コミットメッセージを間違えた時(エディタが開いて、コミットメッセージを直に修正できる)
git commit --amend
# または、コミットを取り消したい(取り消したいコミットが直前のものでないときに用いる)
# 5e1d749はcommit識別番号
git revert 5e1d749
Note) addせずに(し忘れて)commitコマンドを打っても、"Changes not staged for commit"とでて、実際にはcommitされません。git log --stat
で何も変わっていないことが確認できます。
git remote add originの修正
# リモートレポジトリの確認
git remote -v
# リモートレポジトリの変更
git remote set-url origin https://github.com/username/repository.git
# リモートレポジトリが変更されたことを確認
git remote -v
とりあえず、理解しながら数をこなそう。