Gitをコマンドから操作する #1 サルわか入門編
Gitについて学んだことのメモ。主にGitをコマンドから実行する方法について学んだ。
参考サイトはここの入門編。
自分向けのメモなのでまとめかたは雑。そのうちきれいに。
Git
「Git」は、ソースコードのバージョンを管理するツールのことで正確には「分散バージョン管理システム」のこと。Git以外にもCVSやSubversionがあるが近年広く受け入れられているのがGit。
GitとGithubの違い
Gitはソースコードのバージョンを管理する「ツール」のことで、Githubは、Gitを利用した開発者を支援する「Webサービス」。
インストールと初期設定
- インストールはここから
- .gitconfigファイルにユーザー名とメールアドレスを設定
$ git config --global user.name "<ユーザ名>" $ git config --global user.email "<メールアドレス>"
使い方
ローカルリポジトリ作成
Gitの管理下にしたいディレクトリ(この場合はtutorial)に移動してinitコマンドを実行する。
$ cd tutorial/ $ git init Initialized empty Git repository in /Users/izumi/tutorial/.git/
バージョン管理の状態を確認する
※(準備)tutorialディレクトリに簡単なコメントを書いたsample.txtを置いておく。
バージョン管理の状態を確認するにはgit status
コマンドを実行する。
ステージング
git status
コマンドで状態を確認すると追跡対象外のファイル(Untracked files)があるのでIndexに登録する。これを「ステージングする」という。
ステージングするにはaddコマンドを実行する。*1
$ git add <file>
git status
コマンドでもういちど状態を確認する
“Changes to be committed” 欄に表示されている、つまりステージされているということがわかる。
コミット
git commit
コマンドを実行する。mオプションを付けると1行のコミットメッセージを付けることができる。
実際の運用ではコミットコメントをつけずにコミットすることはないのでmオプションは必須のつもりで覚えておくとよい。
$ git commit -m "first commit" [master (root-commit) b5803da] first commit 1 file changed, 1 insertion(+) create mode 100644 sample.txt
リポジトリの変更履歴を確認する
git log
コマンドを実行する。
$ git log commit b5803daf1349ff3c6a531cc2a9710d561d58526a (HEAD -> master) Author: izumi <メールアドレス@gmail.com> Date: Sun Dec 30 15:31:56 2018 +0900 first commit
リモートリポジトリ作成
リモートリポジトリを追加するにはremote add
コマンドを実行する。
$ git remote add <name> <url>
<url>にはリモートリポジトリのURLを指定し、<name>にはリモートリポジトリの別名(短い名前)を指定する。
これはリモートリポジトリにアクセスする際、長いURLをいちいち打たなくても良いようにするためで"origin"を指定するのが一般的である。*2
プッシュ
リポジトリをプッシュするには、pushコマンドを実行する。
$ git push -u <repository> <refspec>...
<repository>にはプッシュ先のアドレスを指定する(先程リモートリポジトリに"origin"という名前をつけたはずなのでそれを指定)、<refspec>はプッシュするブランチを指定する。
以下、実行結果。
$ git push -u origin master Enumerating objects: 10, done. Counting objects: 100% (10/10), done. Delta compression using up to 4 threads Compressing objects: 100% (5/5), done. Writing objects: 100% (10/10), 862 bytes | 862.00 KiB/s, done. Total 10 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), done. To https://github.com/izumii19/gitTutorial.git * [new branch] master -> master Branch 'master' set up to track remote branch 'master' from 'origin'.
リポジトリのクローン
$ git clone <repository> <directory>
<repository>はクローンするリポジトリ名、<directory>はクローンする先になるディレクトリ名を指定する。 ためしに「tutorial2」という名前のディレクトリ名でリモートリポジトリをクローンする。
$ git clone https://github.com/izumii19/gitTutorial.git tutorial2 Cloning into 'tutorial2'... remote: Enumerating objects: 10, done. remote: Counting objects: 100% (10/10), done. remote: Compressing objects: 100% (4/4), done. remote: Total 10 (delta 1), reused 10 (delta 1), pack-reused 0 Unpacking objects: 100% (10/10), done.
コミットコメントのコツ
- バグ修正や機能追加などの異なる意味を持つ変更はできるだけ分けてコミットする。 (後から履歴を見て特定の変更内容を探しやすくするため。)
- コミットコメントの標準の書き方
1行目 : コミットでの変更内容の要約
2行目 : 空行
3行目以降 : 変更した理由