チートシートを理解するためのGit入門
概要
Gitはソースコード管理やバージョン管理を行うための分散型バージョン管理システム(DVCS: Distributed Version Control System)です。2005年にLinuxの生みの親であるリーナス・トーバルズによって開発され、その後コミュニティによって広く使用されるようになりました。主な特徴は下記の通りです。
- 分散型バージョン管理システム
各開発者が自分のローカルリポジトリを持ち、リポジトリ全体をコピーします。そのため、中央サーバーに依存せず、オフラインでも作業が可能です。開発用コードと実行用コードを別に管理することができます。 - ブランチ&マージ機能
ブランチの作成やマージが非常に高速で簡単です。これにより異なる機能やバグ修正の作業を並行して進めやすくなります。また複雑なマージ操作を簡単に行うことができます。Gitはマージコンフリクトの解決を支援するツールも提供しています。これによりチームで並列な開発を実現できます。 - 分散開発のサポート
世界中の開発者が協力して同じプロジェクトに貢献することができます。GitHubやGitLabなどのリモートリポジトリホスティングサービスと連携して、プロジェクトを公開したり、コラボレーションを行ったりできます。
git理解のポイント
解説の最後にgit理解のポイントを解説します。gitは覚えることが多く一見すると取っつきにくい印象を持たれるかもしれません。しかし、どのエリアで(ローカル環境?リモートリポジトリ?)、どんな作業をしたいのか(変更を確定したい、確定内容を修正したいなど)を明確に意識することでgitの理解が深まります。以下で説明する作業場所と変更管理の流れをしっかり押さえましょう!
gitの作業場所(4つのエリア)
gitを活用する上で作業場所である4つのエリアを理解する必要があります。下の図を見てください。
まずは作業のためのエリアであるワークツリーで作業を行います。続いて変更を確定する前に変更を一時保存をするステージングエリアに変更したファイルを移動させます(git add)。そしてローカルリポジトリで最終的に変更を確定させます(git commit)。
複数人での開発などでファイルを共有したい場合は、ローカルリポジトリの変更内容をリモートリポジトリにアップロードする必要があります(git push)。リモートリポジトリは他の開発者が変更内容をアップロードしている場合もありますので、定期的にダウンロード(git pull, git clone)をする必要があります。
K.K.Sidethree, 【Git超初心者入門】Gitの基本的な知識をみにつけよう編
gitの変更管理(コミット、ブランチ、マージ)
gitを操作するエリアを理解した後は、gitでの変更管理の流れを理解していきましょう。下の図を見てください(引用元はこちら)。
一つ一つの〇がコミット(変更内容のかたまり)です。開発の際はブランチ(ここでは下段のnew_feature)を切り、変更の管理をnew_featureの中で完結させます。そして変更作業が終わった後はnew_featureをもとのmasterにマージし変更内容を合流させます。
Micaela Chan et al., Git & GitHub Tutorial for Scientists
便利コマンド
初期設定
gitリポジトリの作成・取得は下記のコマンドになります。
# 新規のgitリポジトリ作成
git init
# 新規のgitリポジトリとリモートリポジトリを対応付け
git remote add
# 既存のgitリポジトリ取得
git clone <リポジトリURL>
gitリポジトリの設定コマンドの例は下記になります。初めてgitをインストールした場合は名前とメールアドレスを登録するようにしましょう。このユーザー情報がコミットに登録されることになります。
git config --global user.name "名前"
git config --global user.email "メールアドレス"
開発
変更を管理するコマンドは下記になります。
# ステージングエリアに変更ファイルを移動
git add <ファイル名>
git add . <-全ファイル
# ステージングエリアの変更ファイルを確定し、ローカルリポジトリに登録
git commit -m "コミットメッセージ"
# ローカルリポジトリをリモートリポジトリに登録
git push origin <ブランチ名>
# ワーキングディレクトリの追跡されていないファイルを削除
git clean -f
ブランチ管理
ブランチを操作するためのコマンドは下記になります。
# ブランチ
git branch #ブランチの表示
git branch <ブランチ名> #ブランチ作成
# ブランチの切り替え
git checkout <ブランチ名>
# ブランチのマージ
git merge <ブランチ名>
# 変更内容を一時避難
git stash
# 一時避難した変更内容を復元
git stash pop
履歴の確認と操作
コミット履歴を確認したり、削除などの操作を行うコマンドは下記になります。
# コミット履歴を確認
git log
# どのエリアでどんな変更が管理されているかを確認
git status
# エリアの変更差分を表示
git diff
# 履歴の削除
# git addする前
git restore .
git reset --hard <コミットハッシュ>
# git pushした後
git revert <コミットハッシュ>
SSH接続
GitHubなどのリモートリポジトリと接続する場合のコマンドです。事前にsshを~\.sshに配置する必要があります。
# git pullする場合
git -c core.sshCommand="ssh -i ~/.ssh/SECRET_KEY_NAME" pull
まとめ
本記事ではgitの概要とよく利用されるコマンドについて紹介しました。よく使うコマンドに焦点を当てているためgitの仕組みの解説は最小限でしたが、gitを快適に利用するためにもぜひgitの仕組みについても理解してみてくださいね!