0 はじめに
Git入門の備忘録を記載する。
参照
1 gitとは何か?
gitのバージョンを確認する。
$ git --version
2 バージョン管理の流れを理解しよう
バージョン管理の流れには、①作業ディレクトリ(ワークツリー)、②ステージングエリア(インデックス)、③リポジトリ(ローカル、リモート)がある。
状態 | 内容 |
---|---|
作業ディレクトリ | 作業ディレクトリではファイルを作ったり修正したりする。 |
ステージングエリア | ある程度まとまりになったらステージングエリアにいく。 |
リポジトリ | 最後にきれいにまとまったものを履歴データベースに保存する。ローカルは個人PCで、リモートは共有するために用いる。 |
3 gitの設定
gitでは名前とEmailを記載するようになっているので初期設定する。
gitは名前とEmailを設定する。
$ git config --global user.name "hdk"
$ git config --global user.email “hdk@gmail.com”
メッセージを色分けする。
$ git config --global color.ui true
設定情報を確認する。
$ git config -l
4 初めてのコミットをしてみよう
$ mkdir myweb
$ cd myweb
初期化処理する。
$ git init
$ vim index.html
1.作業ディレクトリ -> 2. ステージングエリア(インデックス)
$ git add index.html
2. ステージングエリア(インデックス)-> 3. リポジトリ(ローカル)
$ git commit index.html
メッセージを書き込む必要があるので、「initial commit」などとわかりやすく記載する。
ログを確認する。
$ git log
5 gitのログを確認してみよう。
ログを確認する。
$git log
ログを1行で表示する。
$git log --oneline
変更箇所だけを見る。
$git log -p
ファイルの変更箇所の数をみる。
$ git log -stat
6 現在の状態を把握しよう
ファイルがどのような状態なのかを確認する。
$ git status
正しく修正しており更新する場合は、1.作業ディレクトリ -> 2. ステージングエリア(インデックス)とする。
$ git add index.html
間違って修正した場合は、ファイルをもとに戻す。
$ git checkout -- index.html
7 差分を確認してみよう
どこをどう変更したか確認する。
$ git diff
$ git diff -cached
8 gitでのファイル操作について
indexのhtmlファイルのみをステージングエリアに移行する。
$ git add index.html
フォルダ直下のファイルをすべてステージングエリアに移行する。
$ git add .
htmlファイルを移動する。
$ git mv index.html
9 git管理に含めない設定について
バージョン管理をする必要がない、意味がないログファイルなどを無視したい場合の操作について説明する。
$ vim .gitignore
.gitignoreファイルで編集する。
*.log
と記載することで.logファイルを無視するように設定できる。
10 直前のコミットを変更する
$ vim index.html
$ git add .
$ git commit -m "ライン2を追加"
$ git log
コミットするほどでもない追加事項がある場合は、「--amend」を用いる。
$ vim index.html
$ git add .
$ git commit --amend
$ git log
11 過去のバージョンに戻ってみよう (1)
バージョン管理のよいてっはいつでも過去に戻って間違いがなかったようにできることである。
$ vim index.html
$ git add .
それで前のコミットに戻りたい。
$ git reset --hard HEAD
または
$ git reset --hard IDを記載する
12 過去のバージョンに戻ってみよう (2)
13 ブランチを使ってみよう
ブランチには主に統合ブランチとトピックブランチがある。
統合ブランチはリリース版が何時でも作成可能なようしておくためのブランチです。そのため、安定した状態を保っておくことが重要です。通常、masterブランチを統合ブランチとして使用します。
トピックブランチは、機能追加やバグ修正といったある課題に関する作業を行うために作成するブランチです。複数の課題に関する作業を同時に行う時は、その数だけトピックブランチが作成されます。
ブランチの一覧を表示する。
$ git branch
*master
新しいブランチ「hoge」を作るときは、
$ git branch hoge
hogeに移動するときは
$ git checkout hoge
masterに移動するときは
$ git checkout master
14 ブランチをマージしてみよう
$ git branch
hoge
*master
hogeのほうで作られたものをmasterにマージする。
$ git merge hoge
もうマージしたのでhogeがいらないときは削除しましょう。
$ git branch -d hoge
$ git branch
*master
15 マージの衝突を解決してみよう (1)
ブランチ「hogehoge」を作成して「hogehoge」にチェックアウトしたい
$ git checkout -b hogehoge
$ git branch
*hogehoge
master
同じ行を書き直してマージするとコンフリクト衝突が発生する。
16 マージの衝突を解決してみよう (2)
$ vim index.html
コンフリクトしている場合は統一したい方に修正する。コメントなどは削除する。
その後は素直にコミットできる。
$ git add .
$ git commit -m "ライン2を追加"
17 タグを使ってみよう
リリースタグには注釈付きタグを使ってコメントや署名を追加します。 軽量タグはローカルで一時的に使用する使い捨てなどに使用します。
軽量タグ
- 名前を付けられる
注釈付きタグ
- 名前を付けられる
- コメントを付けられる
- 署名を付けられる
$ git log
git logしたときに見られる番号commit IDをわかりやすい言葉に置き換えるのがタグの機能である。
直近のcommit IDにタグをつける
$ git tag v1.0
$ git show v1.0
指定したcommit IDにタグをつける
$ git tag v0.9 CommitのID
タグを削除する
$ git tag -d v0.9
18 エイリアスを使ってみよう
コマンドを省略して登録する。
$ git config --global alias.co checkout
$ git config --global alias.st status
$ git config --global alias.br branch
$ git config --global alias.ci commit
使用例
$ git st
登録してコマンド一覧の表示
$ git config -l
19 はじめての共同作業
共有リポジトリ
- ourweb.git
ローカル
- Aさん myweb
- Bさん myweb2
共有リポジトリ
$ cd ourweb.git
$ git init --bare
20 共有リポジトリにpushしてみよう
Aさんが共有リポジトリに登録する場面を想定する。
リモートリポジトリのアドレスは名前を付けて記録しておくことができます。記録しておくと、pushするときには毎回長いリモートリポジトリのアドレスを入力する必要がなくなります。
まずは「origin」という名前でリモートリポジトリを登録してからpushを行います。
リモートリポジトリを追加するには、remoteコマンドを使用します。は登録名、はリモートリポジトリのURLを指定します。
$ git remote add origin ~/ourweb.git
originに向かってmasterを突っ込む
$ git push origin master
21 リポジトリの内容を共有してみよう
Bさんが共有リポジトリから共有する場面を想定する。
リポジトリを複製するにはcloneコマンドを使用します。はリモートリポジトリのURL、は複製先のディレクトリ名を指定します。
$ git clone ~/ourweb.git/ myweb2
Bさんが編集して共有リポジトリに登録する。
$ vim index.html
$ git add .
$ git commit -m "line2 added"
$ git push origin master
Aさんが、更新された共有リポジトリからローカルリポジトリにマージする。
$ git pull origin master
22 共有時のトラブルを解決する
vim index.html
コンフリクトが起きたところを削除する。
$ git commit -am "conflict fixed"
$ git push origin