タイトル通りで自分用のメモ書きなのでいずれ追記したり、体系的にまとめていきたいと思います。
前提知識
領域
gitは変更履歴(ファイルを作成、削除、更新した履歴)を管理するために、保管領域を4つに分けている
1. ワーキングツリー
- ファイルの作成、削除、更新などを行う領域
- 変更履歴そのものを作成する場所と言い換えてもいいかしれない
2. インデックス
- git add
した時に変更履歴が登録される領域
- どの変更履歴をローカルリポジトリへ保管するかを登録する
- インデックスに登録すること(git add)をステージングともいう
3. ローカルリポジトリ
- git commit
した時に変更履歴が登録される領域
- 変更履歴をローカルに保存する=自分用
4. リモートリポジトリ
- git push
した時に変更履歴が登録される領域
- 変更履歴をリモートに保存する=共有用
HEADとは
変更履歴の最新版ではなく直近版のこと
以下はgit log
の簡易形式だが、HEAD
、つまり最新版の変更履歴はコミット3ということになる。
origin/HEAD
はリモートリポジトリのHEAD
のこと。
以下の履歴からローカルリポジトリで変更した内容をまだgit push
してリモートリポジトリに保存していないことが伺える。
コミット3 (HEAD -> master)
コミット2 (origin/master, origin/HEAD)
コミット1
リセットのオプション種類
例
1. A.txtというファイルの内容を変更し、
2. git add A.txt
して、
3. 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
git log --oneline
git stash
git stash list
git stash pop stash@{0}
※stash@{0}
は適宜変更
git stash clear
git commit --amend
git merge --abort
git reset HEAD addしたファイル名
▼【参考サイト】
https://qiita.com/shuntaro_tamura/items/db1aef9cf9d78db50ffe