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 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