Gitの仕組みとコマンドについて改めて基礎を復習したのでまとめておきます。
Gitの特徴
Gitの特徴は以下になります。
- データをスナップショットとして管理する
- コミットでバージョンを記録する
この二つができることで何が便利かと言いますと、
- 差分で保存しないので開発スピードが上がる
- スナップショットで記録しているのでバージョンをそのまま以前の状態に戻すことができる
というところです。
私が以前参加したプロジェクトはものすごくレガシーな環境だったため、バージョン管理ツールも非常に古く差分をいちいち確認しなければいけないタイプだったのですが、それだと非常に進捗が遅くなり効率が悪いです。
それに対してGitは、上に挙げたような理由からそういった従来の管理ツールの欠点を解消した形で誕生し、現在はほとんどの開発に利用されているわけですね。
Gitの操作の流れ
自分の変更の場合
- ローカルでファイルの変更
- ローカルリポジトリにスナップショットを記録
- GitHubにアップロードする
git init
ローカルリポジトリ
ローカルリポジトリはファイル変更などを記録しておく場所のことです。
他人の変更を取り込む場合
- GitHubから記録を取得する
- 取得したGitHubの記録をワークツリーに反映する
git clone リポジトリ名
ローカルを詳しく見る
ローカル環境については以下三つを押さえておく。
- ワークツリー
- ステージ
- リポジトリ
ワークツリー
ファイルを変更する場所。
ここで開発作業を行う。
ステージ
コミット(スナップショットを記録)する変更を準備する場所。
一旦ここに変更を追加する。
git add ファイル名
記録しておきたい変更分のみ追加しておく。
リポジトリ
スナップショットを記録する。
ステージの追加が完了したら最後にコミットをして変更を記録する。
git commit
変更状況を確認
git status
変更差分を確認
git add する前の変更差分を確認。
git diff
git add した後の変更差分を確認。
git diff --staged
変更履歴を確認
コミットの履歴を確認できる。
git log
削除の記録をする
ファイルごと削除する場合。
git rm ファイル名
ディレクトリごと削除する場合。
git rm -r ディレクトリ名
ファイルを残したいとき。
git rm --cached ファイル名
移動の記録する
git mv 旧ファイル 新ファイル
GitHubにアップする
GitHubにリモートリポジトリを登録。
git remote add origin
ローカルリポジトリにコミットしたものをGitHubに送信する。
git push -u origin master
初回に-uオプションをつけておくと次回以降記載がpushのみで良いので楽になる。
コマンドにエイリアスをつける
コマンドにエイリアスをつけとくことでコマンド入力が楽になる。
例:commitコマンドにcoというエイリアスを付与する。
git config alias.co commit
パソコン全体の設定を変えたい場合。
git config --global alias.co commit
バージョン管理したくないファイル
.gitignoreファイルに管理したくないファイルを指定する。
# コメント
# ファイル指定
index.html
# ディレクトリ以下を指定
dir/
変更の取り消し
色々取り消し方法。
ファイルの変更を取り消す
git checkout --ファイル名(またはディレクトリ名)
全変更を取り消す場合。
git checkout -- .
ステージした変更を取り消す
git reset HEAD ファイル名(またはディレクトリ名)
全変更を取り消す場合。
git reset HEAD .
直前のコマンドをやり直す
git commit --amend
※チーム開発で混乱してしまうため、リモートリポジトリにpushをしたコミットを修正してはいけない。
まとめ
ひとまずここでいったん終了いたします。
まだ使うコマンドはたくさんあるので、後ほどまた別記事で書いていく予定です。
そちらもぜひ読んでいただければと思います。
ではでは。