目次
概要
HTB等でマシン攻略するときにはよくgitが登場します。
この記事ではgitの理解と合わせてよく使うコマンドについてまとめます。
gitとは
gitとは、ソースコードなどのファイルの履歴を管理し、複数人で効率よく開発できるバージョン管理システムです。
主なメリット
- 変更履歴を時系列で記録し、いつでも過去版へ戻せる
- ブランチで並行開発し、後で統合(マージ)できる
- コードレビューや共同作業がやりやすい
基本用語
gitでよく使う単語について以下に記載します。
- リポジトリ(repo):プロジェクトとその履歴のデータベース(HTB等でhttp://ホスト/.gitで検出されるもの。)
- コミット(commit):スナップショット(変更セット)にメッセージを付けて保存
- ステージ(index):次のコミットに含める変更の一時置き場
- ブランチ(branch):独立した作業ライン(例:main、feature-x)
- マージ(merge):ブランチ間の変更を統合
- リモート(remote):ネット上などの共有リポジトリ(例:origin)
- プルリクエスト(Pull Request、PR):自分のブランチの変更を対象ブランチへ取り込むよう依頼する仕組み
- チェックアウト(checkout):現在の作業対象の指定
構成の例
.gitの一般的なフォルダ構成について以下に記載します。
.git/
├ HEAD:現在チェックアウトしている参照
├ config:リポジトリ固有の設定(ユーザ名・メール、remote「origin」など)。
├ objects/:Gitが管理する履歴の実体、commit(コミット)、tree(ディレクトリ構造)、blob(ファイル内容)等がある
├ refs/:名前付き参照(ブランチやタグなど)
├ index:ステージ(インデックス)の実体(バイナリ)
├ logs/:リファレンスログ(reflog)。HEAD や各 refs が「いつ→何へ」移動したかの履歴。
├ hooks/:フック(自動実行スクリプト)の置き場。初期は *.sample が入っており、必要なら拡張子を外して有効化。
└ info/
よく使うコマンド(HTBなどで)
- git init:初期化
- git clone <URL>:/取得
- git status:状態確認
このコマンドを実行すると、以下の情報を取得できます。
・ステージングされていない変更
・まだコミットされていないステージングされた変更
・追跡されていない新しいファイル - git add <file>(ステージに載せる)
- git commit -m "メッセージ"(履歴として保存)