Blog

Gitの基本操作

  • 投稿者: yoshitakakai
  • 作成日: 2025年3月19日14:43
  • 更新日: 2025年3月21日12:19
  • カテゴリ: Git
  • タグ:

Gitのバージョンを表示

$ git --version

現在の状況を表示

$ git status

作業フォルダを移動

cd ..

新たにフォルダを作成

$ mkdir フォルダ名

作成したフォルダに移動

$ cd フォルダ名

Gitリポジトリを作成

$ git init

ステージング

$ git add ステージングするファイル名・フォルダ名

コミット

$ git commit -m "コメントを入力"

履歴の確認

$ git log

ファイルを削除

$ rm ファイル名

コミット前の変更を破棄

$ git checkout ファイル名
  $ git add .
  $ git commit -m "コメント"

この変更を一つ手前のコミットまで戻す

$ git reset HEAD^ --hard

三つ手前のコミットまで戻す場合

$ git reset HEAD^^^ --hard
  • Soft

    変更→ステージング→コミットの作業のうち、最後のコミットだけをリセットする。

  • Mixed

    ステージングまでをリセットする。

  • Hard

    変更からの作業を全て破棄する。間違えて削除した場合や、プログラムファイルが壊れた場合などに使用する。

コミットIDで指定して戻す

コミットIDを確認

$ git log

コミットIDで指定してリセットする(戻す)

$ git reset コミットID

最新のコミットに指定のタグを付加

$ git tag  タグ名

コミットを指定してタグを付加

$ git tag タグ名 コミットID

既存のタグを確認

$ git tag

タグの詳細を取得

$ git show タグ名

タグを削除

$ git tag -d タグ名

.gitignoreの書式(パスの記述)

ファイルの指定

/log/system.log

フォルダ内全てのファイルの指定

/log/(最後の/は省略できる)

フォルダ直下のファイルを指定

/system.log

ワイルドカード(部分一致)

任意の文字列を含むファイルの指定

*.log

文字の英数字を含むファイルの指定

log???.txt(?1つにつき、英数字1文字分にあたる)

範囲内の英数字を含むファイルの指定

log[0-9].txt

任意のフォルダ内のファイル指定

/log/**/system.log

無視する例外ファイルの指定

/log

!/log/error.log

コメント・エスケープ

先頭を # で始めるとその行はコメント扱いになる。
!などの特別な記号をフォルダ名やファイル名で扱う場合は、¥! や \! などを使う。
例) /\!IMPORTANT!\/

ブランチを作成

新規フォルダ作成+Gitを追加

$ cd ..
$ mkdir フォルダ_X
$ cd フォルダ_X
$ git init

ブランチの作成

$ git branch ブランチ_Y

ブランチの一覧を取得

$ git branch

ブランチを切り替える

$ git checkout ブランチ_Y

ブランチの一覧を取得

$ git branch

特定のコミットからブランチを作成する

コミットIDを確認

$ git log

特定のコミットからブランチを作成

$ git checkout コミットID -b  ブランチ_Z

ファイル一覧を確認

$ ls

ブランチを作成して切り替える

ブランチを作成後、そのままチェックアウトする

$ git checkout -b ブランチ_A

ブランチをマージ

ブランチを作成

$ git checkout ブランチ_A

コミットの作成

$ git add .
$ git commit -m "コメント"

全てのブランチのコミットログの確認+ブランチツリーの表示

$ git log --all --graph

masterブランチを変更する

$ git checkout master

コミットの作成(addを同時に実行)

$ git commit -am "コメント"

ブランチをマージ(コミットメッセージを自動作成)

$ git merge ブランチ_A --no-edit

全てのブランチのコミットログの確認+ブランチツリーの表示

$ git log --all --graph
qキーでプロンプトに戻る

ブランチを削除

削除するブランチ以外のブランチをチェックアウトする

$ git checkout master

ブランチを削除する

$git branch -d ブランチ_A

強制的にマージされていないブランチを削除する

$git branch -D ブランチ_A

ブランチの名前を変える

ブランチ名を変更

$ git branch -m master main

ブランチの一覧を取得する

$ git branch

ファストフォワードでマージする

ブランチを作成

$ git checkout -b ブランチ_B

コミットの作成

$ git add .
  $ git commit -m "コメント"

マージする

$ git checkout main

ファストフォワードありでマージ

$ git marge ブランチ_B

ファストフォワードなしでマージ

$ git marge ブランチ_B --no-ff --no-edit

ブランチ・ツリーの表示

$ git log --all --graph

コンフリクトの解消

ブランチの作成

$ git checkout -b ブランチ_C

コミットの作成

$ git add .
$ git commit -m ‘コメント’

ブランチの切り替え

$ git checkout main

コミットの作成

$ git add .
$ git commit -m "コメント"

マージを実行

$ git merge ブランチ_C --no-edit

コンフリクト発生時の例

Auto-merging index.html
CONFLICT (add/add): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

コンフリクトを解消後に、マージコミットをコメントメッセージの編集なしで作成

$ git commit -a --no-edit

ログを確認

$ git log --all --graph

macOSで鍵ファイルを作る

ターミナルを起動してssh-keygenを実行する

$ ssh-keygen

「Enter file in which to save the key (/Users/ユーザー名/.shh/id-rsa) :」Enter keyを入力
「Enter passphrase Enter」keyを入力
「Enter same passphrase again」Enter keyを入力
すると指定の場所にid_rsa(秘密鍵)とid_rsa.pub(公開鍵)というファイルが作られる。

ターミナルで以下のように入力すると、.sshフォルダをFinderで開ける。
$ open ~/.ssh

コミットを一時的に待避

現在の状況を表示

$ git status

スタッシュする
$ git stash save "コメント" -u
※ -uを指定すると、ステージングしていないファイルも対象にすることができる。指定しない場合、ステージングしているファイルだけをスタッシュに待避させることになる。

スタッシュの一覧を表示

$ git stash list
「stash@{0}」「stash@{1}」といった識別番号が付加されているのを確認する。

識別番号を指定してスタッシュを適用する

$git stash apply stash@{0}

直前に作ったスタッシュを適用する

$git stash apply

識別番号をしてしてスタッシュを削除

$ git stash drop stash@{0}

直前に作ったスタッシュを削除

$ git stash drop

全てのスタッシュを削除

$ git stash clear

適用したスタッシュ内容をコミットする

$ git commit -am "コメント"

直前に行ったコミットに変更を加える

アメンドによるコミットの作成

$ git commit -a --amend --no-edit

コミットログの確認

$ git log -p

リベースでマージ

リベースしたい相手のブランチ名を指定する

$ git rebase ブランチ名

ブランチ・ツリーの表示

$ git log --all --graph

コミットのスカッシュ(3つ手前のコミットの場合)

$ git rebase -i HEAD^^^

対話型リベースの内容を変更

スカッシュでまとめたいコミットの先頭を「pick」から「squash」に変更するしてファイルを保存する(escキー → :wq → Enterキー)。

ログを確認

$ git log

チェリーピックで変更を取り込む

変更を取り込みたいブランチにチェックアウトする

$ git checkout ブランチ名

コミットログから取り込みたい変更が含まれたコミットIDを見つける

$ git log --all
(qコマンド閉じる)

チェリーピックの実行

$ git cherry-pick コミットID
※変更箇所によって前後とのコミット内容の関係上、コンフリクトが起きる可能性があるため、予め実行前に確認しておく。

パッチを作成・適用

変更内容が含まれたブランチでコミットの差分を確認する

$ git checkout ブランチ_A
$ git diff 範囲の先頭 範囲の末尾
例)$ git diff HEAD^ HEAD^^

指定の差分でパッチファイルを作成する

$ git diff HEAD^ HEAD^^ > ../patch.diff

適用したいブランチに切り替えてパッチを適用する

$ git checkout ブランチ_B
$ patch < ../patch.diff