Git 基本操作
Git の仕事は、プロジェクトのスナップショットを作成・保存し、その後のスナップショットと比較することです。
この章では、プロジェクトのスナップショットの作成とコミットに関するコマンドを紹介します。
Git でよく使われるのは以下の 6 つのコマンドです:git clone、git push、git add 、git commit、git checkout、git pullこれらについては後で詳しく説明します。

説明:
- workspace:ワークスペース(作業ディレクトリ)
- staging area:ステージングエリア/インデックス
- local repository:バージョンライブラリ(ローカルリポジトリ)
- remote repository:リモートリポジトリ
簡単な操作手順:
$ git init $ git add . $ git commit
- git init - リポジトリを初期化します。
- git add . - ファイルをステージングエリアに追加します。
- git commit - ステージングエリアの内容をリポジトリに追加します。
リポジトリ作成コマンド
次の表は、git リポジトリを作成するコマンドを示しています:
| コマンド | 説明 |
|---|---|
git init |
リポジトリの初期化 |
git clone |
リモートリポジトリのコピーを取得します。つまり、プロジェクトをダウンロードします。 |
コミットと変更
Git の仕事は、プロジェクトのスナップショットを作成・保存し、その後のスナップショットと比較することです。
次の表は、プロジェクトのスナップショットの作成とコミットに関するコマンドを示しています:
| コマンド | 説明 |
|---|---|
git add |
ファイルをステージングエリアに追加 |
git status |
リポジトリの現在の状態を表示し、変更のあるファイルを表示します。 |
git diff |
ファイルの差分を比較します。つまり、ステージングエリアとワークディレクトリの差分です。 |
git difftool |
外部の差分ツールを使用して、ファイルの変更を表示・比較します。 |
git range-diff |
2つのコミット範囲間の差分を比較します。 |
git commit |
ステージングエリアをローカルリポジトリにコミットします。 |
git reset |
バージョンをロールバックします。 |
git rm |
ファイルをステージングエリアとワークディレクトリから削除します。 |
git mv |
ワークディレクトリのファイルを移動または名前変更します。 |
git notes |
注釈(コメント)を追加します。 |
git checkout |
ブランチを切り替えます。 |
git switch (Git 2.23 版本引入) |
より明確にブランチを切り替えます。 |
git restore (Git 2.23 版本引入) |
ファイルの変更を復元または取り消します。 |
git show |
Git オブジェクトの詳細情報を表示します。 |
コミットログ
| コマンド | 説明 |
|---|---|
git log |
履歴コミットログを表示 |
git blame <file>
|
指定したファイルの履歴変更記録をリスト形式で表示 |
git shortlog |
簡潔なコミットログの要約を生成 |
git describe |
Git のタグシステムに基づいて現在のコミットを説明する、読み取り可能な文字列を生成します。 |
リモート操作
| コマンド | 説明 |
|---|---|
git remote |
リモートリポジトリ操作 |
git fetch
|
リモートからコードベースを取得 |
git pull
|
リモートコードをダウンロードしてマージ |
git push
|
リモートコードをアップロードしてマージ |
git submodule
|
他の Git リポジトリを含むプロジェクトを管理 |
Git ファイルの状態
Git のファイル状態は3つに分けられます:ワークディレクトリ(Working Directory)、ステージングエリア(Staging Area)、ローカルリポジトリ(Local Repository)。これらの概念とその相互作用を理解することが、Git を習得する鍵です。
ワークディレクトリ(Working Directory)
ワークディレクトリは、ローカルコンピュータ上で表示されるプロジェクトファイルです。ファイルの表示、編集、削除、作成など、実際にファイルを操作する場所です。ファイルへのすべての変更は、まずワークディレクトリで行われます。
ワークディレクトリ内のファイルには、次のようないくつかの状態があります:
- 未追跡(Untracked):新しく作成されたファイルで、Git に記録されていません。
- 変更済み(Modified):Git に追跡されているファイルに変更がありましたが、これらの変更はまだ Git の記録にコミットされていません。
ステージングエリア(Staging Area)
ステージングエリアは、インデックス(Index)とも呼ばれ、ローカルリポジトリにコミットしようとしている変更を保存する一時的なストレージ領域です。ワークディレクトリ内の変更を選択的にステージングエリアに追加できるため、すべてのファイルの変更をコミットする必要なく、複数のファイルの変更を一度にコミットできます。
- 使用
git add <filename>コマンドを使用して、ファイルをワークディレクトリからステージングエリアに追加します。 - 使用
git add .コマンドを使用して、現在のディレクトリ内のすべての変更をステージングエリアに追加します。
git add <filename> # 添加指定文件到暂存区 git add . # 添加所有更改到暂存区
ローカルリポジトリ(Local Repository)
ローカルリポジトリは、.gitディレクトリ内のデータベースで、プロジェクトのすべてのコミット履歴を保存するために使用されます。変更をコミットするたびに、Git はステージングエリアの内容をローカルリポジトリに保存します。
使用git commit -m "commit message"コマンドを使用して、ステージングエリアの変更をローカルリポジトリにコミットします。
git commit -m "commit message" # 提交暂存区的更改到本地仓库
ファイル状態の変換フロー
未追跡(Untracked): 新しく作成されたファイルは、最初は未追跡です。これらはワークディレクトリに存在しますが、Git には追跡されていません。
touch newfile.txt # 创建一个新文件 git status # 查看状态,显示 newfile.txt 未跟踪
追跡済み(Tracked):git addコマンドを使用して未追跡のファイルをステージングエリアに追加すると、ファイルは追跡済みの状態になります。
git add newfile.txt # 添加文件到暂存区 git status # 查看状态,显示 newfile.txt 在暂存区
変更済み(Modified): 追跡済みのファイルに変更を加えると、これらの変更は変更済みの状態として表示されますが、まだステージングエリアには追加されていません。
echo "Hello, World!" > newfile.txt # 修改文件 git status # 查看状态,显示 newfile.txt 已修改
ステージ済み(Staged):
使用git addコマンドを使用して変更したファイルをステージングエリアに追加すると、ファイルはステージ済み状態になり、コミットを待ちます。
git add newfile.txt # 添加文件到暂存区 git status # 查看状态,显示 newfile.txt 已暂存
コミット済み(Committed):
使用git commitコマンドを使用してステージングエリアの変更をローカルリポジトリにコミットすると、これらの変更が記録され、ファイルの状態は追跡済み状態に戻ります。
git commit -m "Added newfile.txt" # 提交更改 git status # 查看状态,工作目录干净その他の拡張