タイトル通りで自分用のメモ書きなのでいずれ追記したり、体系的にまとめていきたいと思います。
前提知識
領域
gitは変更履歴(ファイルを作成、削除、更新した履歴)を管理するために、保管領域を4つに分けている
- ワーキングツリー
- ファイルの作成、削除、更新などを行う領域
- 変更履歴そのものを作成する場所と言い換えてもいいかしれない - インデックス
-git add
した時に変更履歴が登録される領域
- どの変更履歴をローカルリポジトリへ保管するかを登録する
- インデックスに登録すること(git add)をステージングともいう - ローカルリポジトリ
-git commit
した時に変更履歴が登録される領域
- 変更履歴をローカルに保存する=自分用 - リモートリポジトリ
-git push
した時に変更履歴が登録される領域
- 変更履歴をリモートに保存する=共有用
HEADとは
変更履歴の最新版ではなく直近版のこと
以下はgit log
の簡易形式だが、HEAD
、つまり最新版の変更履歴はコミット3ということになる。
origin/HEAD
はリモートリポジトリのHEAD
のこと。
以下の履歴からローカルリポジトリで変更した内容をまだgit push
してリモートリポジトリに保存していないことが伺える。
コミット3 (HEAD -> master)
コミット2 (origin/master, origin/HEAD)
コミット1
リセットのオプション種類
例
- A.txtというファイルの内容を変更し、
-
git add A.txt
して、 -
git commit
した時
--soft
・3を取り消す = ローカルリポジトリの内容を取り消し、ワーキングツリーとインデックスでの変更内容は残る
--mixed
・2、3を取り消す = インデックス、ローカルリポジトリの内容を取り消し、ワーキングツリーでの変更内容は残る
--hard
・1、2、3全て取り消す = ワーキングツリー、インデックス、ローカルリポジトリの内容を取り消す
コマンド
ブランチ一覧にコミットメッセージなどの詳細を加えて表示
git branch -v
git branch -vv
# -vv オプションの方がリモートブランチ情報などより詳細な情報になる
リモートリポジトリのブランチの一覧を確認
git branch --remote
ブランチを削除する
git branch -d ブランチ名
# ブランチを強制削除
git branch -D ブランチ名
ブランチ名を変更する
# 変更したいブランチにいる時
git branch -m 新ブランチ名
# 別ブランチにいる時
git branch -m 現ブランチ名 新ブランチ名
リモートで削除されているブランチをローカルでも削除する
git fetch --prune
リベース
git rebase ブランチ名
対象のローカルブランチをリモートブランチに強制プッシュ
git push -f origin ローカルブランチ:リモートブランチ
ワーキングディレクトリ内の変更を破棄(元に戻す)
git checkout -- ファイル名
リモートリポジトリを確認
git remote -v
ログを1行表示で確認
git log --oneline
コミットしていない内容を一時退避(変更内容をコミットしないとブランチ変更できないのでそういう時に使う)
git stash
一時退避したリストの一覧
git stash list
一時退避した内容(stash)をリストから指定して戻す
git stash pop stash@{0}
※stash@{0}
は適宜変更
一時退避した内容(stash)を全て消去
git stash clear
直近のコミットからの変更内容を(新コミットを追加せず)直近コミットに反映する
git commit --amend
マージする前に戻る
git merge --abort
addを取り消す
git reset HEAD addしたファイル名
▼【参考サイト】
https://qiita.com/shuntaro_tamura/items/db1aef9cf9d78db50ffe