この記事について
この記事は、開発未経験の人間がインプットした内容が書かれています。
実際に開発経験を積まないと身につかない、かといって疎かにしたら後々痛い目にあう、といったジレンマを少しでも解消するために、「頭の中を言語化し、解釈違いを指摘してもらう」という目的で投稿します。
気になる点がありましたらツッコミをいただけると嬉しいです。
記事の内容
ドットインストール「git入門」のまとめ
インプット教材
ドットインストール「git入門」: https://dotinstall.com/lessons/basic_git
開発環境
git version 2.21.0
gitとは
gitは開発しているもののバージョン管理を簡単にできるツールのこと。
作業ディレクトリで開発し、ステージングエリアへ一旦保存し、問題がなければリポジトリに入れる。
リポジトリにはローカル、リモートで分けられ、ドットインストールではローカル環境で解説している。
gitを使用する前準備
ユーザー名とE-mailを登録
git config --global user.name "user name"
git config --global user.email "email address"
出力されるコードの色分け機能をONにする。
git config --global color.ui true
gitの設定内容を一覧表示で確認
git config -l
gitのヘルプを表示。qキーで解除
git config --help
gitの作成〜コミットまでの簡単な流れ
例) 作業ディレクトリmyweb
にgitを作成。ファイルindex.html
を作成しコミットする。
作業ディレクトリに移動
cd ~/myweb/
gitの初期化
git init
ファイルの中身を見る
cat index.html
作業が完了したら、ステージングエリアへ保存する
git add index.html
ステージングエリアからリポジトリに送る(コミットする)。実行するとコミットメッセージを記載するように要求されるので更新内容がわかるように書く(created index.htmlなど)
git commit
コミットメッセージが一行で良い場合は、commitの後に-m
を入れると、コミットの実行とメッセージの記載を一度に実行できる
git commit -m "created index.html"
-m
ではなく-am
にすると、addも含めて一度に実行できる
git commit -am "created index.html"
ログの操作
コミットした履歴がログとして管理されている。ログの内容を確認したり、呼び出したりすることができる
コミットしたファイルに少し変更を加えたい場合、大きな変更でない(ログに残す必要性がない)ものであれば、コミット時に後ろに--amend
を入れると、直前のログとしてコミットできる
git commit --amend
gitの更新内容を一覧表示
git log
ログのIDとコミットメッセージのみ表示する。
git log --oneline
変更内容を表示
git log -p
変更箇所を表示。変更されたファイル名と変更箇所の個数が表示される。
git log --stat
過去のログの状態に戻す
git reset --hard HEAD
HEADにすると直前のログに戻る。特定のログに戻りたいときはコミットIDを他のIDと重複しない長さまで入れる
git reset --hard 5d5a54as5f
ログ移動前の直前のログはORIG_HEADに格納されているので呼び出すことができる
git reset --hard ORIG_HEAD
直前のコミットに任意のタグをつける
git tag v1.0
任意のコミットにタグをつけるにはタグ名の後ろにコミットIDを入れる
git tag v0.9 er524dfggrt
タグの一覧表示
git tag
タグのついたコミットの内容を確認
git show v0.9
タグを消す
git tag -d v0.9
作業したファイルの状態を確認。現在の状態に対してどんなアクションができるかを教えてくれる。
git status
作業したファイルを取り消す
git checkout -- index.html
作業したファイルの状態と内容を表示
git diff
git diff
はステージングエリアに送る前のファイルの変更内容が表示される。ステージングエリアに送ってしまったファイルを確認したい時は、後ろに--cached
を入れる
git diff --cached
今いるファイルから下のファイルを全てaddする
git add .
commitしたファイルなど、一度gitを使ったファイルはgitの管理下にあるのでそのファイルを操作(rm
, mv
など)するとエラーとなる。コマンドの前にgitを入れることでgitの管理下にあるファイルを操作できるようになる。
gitの操作したくないファイルがあるとき(共有したくないファイルがある時など)は、.gitignore
という名前のファイルを作成し、その中にファイル名を記述することで対象外となる。ファイル名をワイルドカードにすれば拡張子で指定できる。
*.log
log拡張子のファイルを全て除外
branch(ブランチ)
作業ルート。デフォルトではmasterという名前のブランチで作業している。ブランチが複数ある場合、今いるブランチで作業したものは他のブランチでは反映されない。
ブランチの新規作成
git branch hoge
ブランチの一覧表示
git branch
ブランチの移動
git checkout hoge
ブランチを新規作成し移動する
git checkout -b hoge
ブランチの削除
git branch -d hoge
marge(マージ)
二つの内容を混ぜること。他のブランチの内容を、今いるブランチに混ぜることができる。他のブランチのファイルを適用したいときに役立つ。
git marge hoge
マージ元とマージ先の同名のファイルの中身が違う場合はエラー(conflict:衝突)となる。問題のファイルの中身を修正しコミットすることで解決できる。
alias(エイリアス)
短縮名。よく使うコマンドを短縮名で登録できる。
例) checkout
を短縮名co
に設定
git config --global alias.co checkout
短縮名を忘れたときは、git config -l
で登録の内容を確認できる
共有リポジトリ
複数人で作業するときは各人が作業したファイルを一つのリポジトリで管理するのが一般的。
ドットインストールでは解説を簡略化するため、一人のユーザーが2つのディレクトリを操作することで2人の作業者と見立てている。
例) 共有リポジトリ用のディレクトリ名: ourweb.git
ディレクトリに共有リポジトリを作成
git init --bare
ディレクトリのコミットを共有(プッシュ)
作業ディレクトリに共有リポジトリを登録する
git remote add origin ~/ourweb.git
登録するときの名前(上記ではorigin)は任意で良い。登録したリポジトリの場所はgit config -l
で確認できる
登録を解除
git remote rm origin(登録した名前)
共有リポジトリにコミットをプッシュ。git push
の後に登録名とブランチ名を指定
git push origin master
共有リポジトリの内容を作業ディレクトリに送り、マージする(プル)
git pull origin master
あるファイルについて、別の作業者がすでに変更しプッシュをした後にこちらもプッシュした場合、ファイルの中身が違うとエラーとなる。その場合は先にプルしてからファイルを修正する。
クローン作成
ディレクトリのクローンを作成したいときは、git clone
の後ろにクローンしたいディレクトリとディレクトリ名を入れる。ディレクトリの「中身」を複製したいのでディレクトリ名の後ろに/
を忘れない
git clone ~/ourweb.git/ myweb2
クローンには共有リポジトリの登録も引き継いでいるので登録不要