
git init
作業ディレクトリに.gitフォルダを作成し、そのフォルダ以下をGitで管理できるようにします。
- 現在のディレクトリに .git フォルダを作成し、Gitのバージョン管理を開始
- 初回のプロジェクトで「Git管理を開始したい」ときに使用
git clone
既存のリモートリポジトリをローカルにコピーします。
例
git clone https://github.com/user/repo.git
-
origin
という名前でリモートが設定される
git add
変更されたファイルを「ステージング領域」に追加します。
例
( すべての変更を追加 )
git add .
( 特定ファイルだけ追加 )
git add ファイル名
-
.
(ドット)は「すべての変更されたファイル」をステージング(準備)する意味- ステージングとは「これらのファイルを次のコミットに含めるよ」とGitに伝えること
git commit
ステージングされた変更をコミット(履歴として記録)します。
例
( コミットメッセージをその場で書く(message の略) )
git commit -m "コミットする"
( 直前のコミット内容やメッセージを修正する )
git commit --amend -m "修正したコミットメッセージ"
-
-m
オプションは “message” の略- コミットには必ずメッセージが必要で、変更内容の概要を記述
-
--amend
オプションは以下のようなことが可能になります- コミットメッセージの変更
- ステージし忘れたファイルの追加・修正
- テスト的なコミットをきれいにまとめ直す
git status
作業ディレクトリの現在の状態(変更・ステージングの有無など)を確認します。
- どのファイルが変更されたか、ステージされているか、まだコミットされていないかを確認
- よくある使い方の流れ:
1.ファイルを編集する
2.git status
で変更を確認する
3.git add
→git commit
と進める
git diff
ワーキングツリー(作業ディレクトリ)の変更内容を表示します。
- ステージングされていない変更の差分(diff)を表示
- どこを編集したのかを確認したいときに便利
例
( 作業ツリーとステージの差分を表示(未ステージ) )
git diff
( ステージングされた変更と最後のコミットの差分表示 )
git diff --staged
( 現在の作業状態と最新のコミットとの差分表示 )
git diff HEAD
-
--staged
は、ステージされた内容が「このままコミットして大丈夫か」を確認するときに使う -
HEAD
は、ステージングされていようがいまいが、作業中の変更すべてをまとめて比較できる
git log
過去のコミット履歴を表示
例
( 過去のコミット履歴を表示 )
git log
( 各コミットを1行で表示(ハッシュ+メッセージ) )
git log --oneline
( ブランチの流れ(マージなど)を視覚的に表示 )
git log --graph
( 各コミットでの変更差分も表示 )
git log -p
( 指定した作者のコミットのみ表示 )
git log --author="名前"
( 過去2日間のコミットだけ表示(自然言語OK) )
git log --since="2.days"
- チーム開発中に「誰がいつ何をしたか」を追跡
- 直前のコミットを確認し、
revert
やreset
で戻したい
git remote add origin
ローカルリポジトリにリモートリポジトリを登録します。
- GitHubで新しくリポジトリを作成したあと、ローカルとつなぐために使う
- 通常は
git push
を使う前に一度だけ設定
例
git remote add origin https://github.com/ユーザー名/リポジトリ名.git
-
remote add
は、リモートリポジトリを追加するコマンド -
origin
は、リモートリポジトリに付ける名前(慣習的に “origin” を使う) - [URL] は、リモートリポジトリのURL(GitHub等で表示されるHTTPS/SSH URL)
git push
ローカルリポジトリの変更をリモートリポジトリに反映(プッシュ)します。
例
( 初回の push(ローカルとリモートを関連付け) )
git push -u origin main
( 2回目以降の push(-u 省略可) )
git push
( develop ブランチをリモートに push )
git push origin develop
-
-u
は、初回push
時に使用することで、ローカルのブランチとリモートのブランチ(origin/main など)を「ひも付け」する- この設定をすると、次回以降は
git push
だけで OK になる
- この設定をすると、次回以降は
-
origin
は、リモートリポジトリの名前(通常は origin) -
main
やdevelop
は、プッシュしたいローカルのブランチ名(例:main, develop など)
これで GitHub 上のリポジトリにコードがアップロードされ、他の人と共有できるようになります。
git pull
リモートリポジトリの最新の変更を取得して、ローカルに自動でマージします。
例
( トラッキング済みのリモートブランチから取得+マージ(origin/main など) )
git pull
( 明示的に origin/main を指定して取得+マージ )
git pull origin main
( マージではなくリベースで取り込む(履歴をきれいにしたいとき) )
git pull --rebase
-
origin
は、リモートリポジトリの名前(通常は origin) -
main
は、リモートブランチ名(例:main, develop)
このコマンドは、git fetch
(リモートから最新情報を取得)とgit merge
(取得した変更をローカルブランチに統合)の処理を一度に行います。
チーム開発中に他の人が push した最新の変更を取り込むときにしようします。
もしコンフリクト(競合)が発生した場合は、手動で解決 → add → commit が必要になります。
git branch
ブランチを確認・作成・削除するためのコマンドです。
例
( ブランチ一覧を表示 )
git branch
( 新しいブランチを作成(切り替えはされない) )
git branch ブランチ名
( ブランチを削除 )
git branch -d ブランチ名
( 強制的に削除 )
git branch -D ブランチ名
-
-d
は「delete(削除)」の略- すでに他のブランチへマージされたブランチだけ削除できます
- 未マージのブランチはエラーになります(誤削除防止のため)
-
-D
は「強制削除(force delete)」を意味します- -d の厳格チェックを無視して削除します
- 誤って削除すると復元が面倒なので注意が必要です
git switch
ブランチを切り替える、または新しく作って切り替えるためのコマンドです(Git 2.23 以降推奨)。
例
( 既存のブランチに切り替え )
git switch ブランチ名
( 新しくブランチを作って、そのまま切り替え )
git switch -c ブランチ名
-
-c
は「create(作成)」の略- すでに存在するブランチ名を指定するとエラーになります
git checkout に比べて安全でわかりやすいため、初学者にはこちらをおすすめします。
git checkout
もともとブランチの切り替えや、特定のファイル・コミットの復元に使われていた多機能コマンドです。
例
( 指定したブランチに切り替え(古い方法) )
git checkout ブランチ名
( 新しいブランチを作成&切り替え(switch -c と同じ) )
git checkout -b ブランチ名
( ファイルの変更を取り消す(ステージ前の状態に戻す) )
git checkout -- ファイル名
( 過去のコミット状態に一時的に切り替える(閲覧目的) )
git checkout コミットID
-
-b
は「branch(ブランチ)」の略- 現在のブランチを元に、新しいブランチを作ってすぐに移動します
-
switch -c
と同じ動作だが、旧バージョンの Git でも使えます
-
--
(ダブルハイフン)は「ブランチ名との区切り」を意味します- これがないと Git は ファイル をブランチ名と誤認する可能性があります
- このコマンドは「最新版のファイルを取得して、ローカル変更を破棄」します
- ファイルを復元する目的なら
git restore ファイル名
が推奨されます(Git 2.23~)
Git 2.23 以降では、ブランチ操作は git switch、ファイル復元は git restore を使うように推奨されています。
git merge
別のブランチで行った変更を、現在のブランチに統合(マージ)します。
例
( 指定したブランチを現在のブランチにマージする )
git merge ブランチ名
( 必ずマージコミットを作成する(履歴を明示的に残したいとき) )
git merge --no-ff ブランチ名
-
--no-ff
は、「Fast-forward」にならず、マージコミットを必ず作る(履歴を明示)
マージは「複数人・複数ブランチ」での開発に欠かせない重要な操作です。
複雑な開発では「Pull Request(PR)」を通じてマージすることが一般的です(GitHub など)。
状況 | 結果 |
---|---|
変更点が重複しない | 自動でマージされる(fast-forward or 通常マージ) |
同じ箇所を両方のブランチが変更している | コンフリクト(衝突)が発生し、手動で解決が必要 |
コンフリクト発生時は、対象ファイルを編集 → 解決 → git add → git commit を行ってください。
git restore
作業ツリーの変更を取り消して、以前の状態に戻すコマンドです(Git 2.23 以降で追加)。
例
( ファイルの変更を元に戻す )
git restore ファイル名
( すべてのファイルを元に戻す )
git restore .
( ステージングした変更(git add)を取り消す )
git restore --staged
-
.
(ドット)は、カレントディレクトリ以下すべてを対象にする -
--staged
は、ステージングから外し、作業ツリーには変更を残す
git restore を使うと、変更は完全に失われます。
重要な変更を失わないよう、実行前に git diff などで確認するのが安心です。
git reset
コミットやステージング(git add)を取り消すためのコマンドです。
例
( 最後のコミットを取り消したい(変更は残したい) )
git reset --soft HEAD^
( ステージングだけを取り消したい(デフォルト動作) )
git reset --mixed HEAD
( すべての変更を完全に取り消す(注意!) )
git reset --hard HEAD
-
HEAD^
は「直前のコミット」を指します -
--soft HEAD^
は、コミットは取り消されるが、変更内容はステージされたまま残ります- 修正して再コミットする場合などに便利
-
--mixed HEAD
は、git add でステージした変更を「作業ツリーの状態に戻す」- ファイル自体は元に戻らず、編集状態はそのまま
-
--hard HEAD
は、コミットもステージも作業ツリーの変更もすべて破棄され、最後のコミットの状態に戻ります- 取り消し不可なので慎重に!(変更が完全に消えます)
書き方 | 意味 |
---|---|
HEAD | 現在の最新コミット |
HEAD^ | 1つ前のコミット |
HEAD^^ | 2つ前のコミット |
HEAD~3 | 3つ前のコミット |
Views: 0