はじめに
個人学習でしか使ったことないです。
gitでバージョン管理をすると、よくわからなくなった際戻せるので楽
都度調べるのは面倒なので、boostnoteにまとめています。
今回はそれを共有
PS: boostnoteは旧版が便利だと個人的に思ってます。
Git コマンド
ローカルリポジトリを作成 ~個人開発~
git init
cloneを作成 ~チーム開発~
git clone <Git hubのcloneの作成リンクのURL>
変更状況を確認する
git status
変更内容を確認する
git diff
前回のcommitからの変更
git diff コミットAのID..コミットBのID
コミットAとBの差分
git diff<ファイル名>
dit diff --staged
git addした後の変更内容を確認 wtとstageの間
git diff --cached
git addした後 Indexと最新のコミットの違いを確認
ステージに記録
git add
<ファイル名>
<ディレクトリ名>
全て
.
コミットする
git commit
git commit -m 'second commit'
-v
変更内容を確認可能
pushする
git push origin master
変更履歴を確認する
git log
git log -n 3
git log --oneline
git log -p index.html
git log --graph
ファイル/ディレクトリを削除する
ファイルを削除したい場合エディタやshellコマンドで削除してaddしてもgit rm
と同じ内容になる。git rmを使うとaddを省略できるので楽
ファイルやディレクトリの削除をstageに記録
git rm <ファイル名>
git rm -r <ディレクトリ名>
wtのファイルを削除し、stageに削除した記録をする その後commitが必要
ファイル削除をstageに記録するが、wtには残す
git rm --cached<ファイル名>
ファイル名の変更
git mv<旧ファイル><新ファイル>
wtのファイル名を変更してステージに変更したことが記録される
ファイルの場所を変更する
git mv <場所を変えたいファイル> 変更先のpath
取り消しするコマンド
ファイルへの変更を取り消す
git checkout -- <ファイル名>
git checkout -- <ディレクトリ名>
git checkout -- .
ステージに追加した変更を元に戻したい時
git reset HEAD <ファイル名>
git reset HEAD <ディレクトリ名>
git reset HEAD .
影響はステージのみ ワークツリーはそのまま
どちらも戻したい場合どちらもやる
HEADは最新のcommitのこと
直前のコミットをやり直す
git commit --amend
リモートリポジトリにPushしたコミットはやり直しちゃだめ
今のステージの内容で直前のcommitを上書きする
消去ではなく上書きしている点に注意
複数のコミットを一度にやり直す場合Rebaseを使う
ブランチ関連
ブランチを切り替える
git checkout <既存ブランチ名>
git checkout -b <新ブランチ名>
作成と切り替えを一度で
新しいブランチを追加
git branch <ブランチ名>
ブランチの切り替えは行わない
ブランチを削除
git branch -d <ブランチ名>
HEADは削除できない
ブランチの一覧を表示
git branch
git branch -a
リモートリポジトリも確認できる
ブランチがどのコミットを参照しているか確認する
git log --oneline
リモートブランチをローカルにコピーして移動
git checkout -t origin/develop
変更をマージする
git merge<ブランチ名>
HEADに指定したbranchが統合
git merge<リモート名/ブランチ名>
git merge origin/master
他の人の変更内容を自分のブランチに統合する
上書きではない。統合された新しいコミットが作成される 元のブランチのコミットをベースに統合したブランチの変更分を取り込んでいる
fast mergeの場合はブランチを進めるだけ
mergeする前にローカルに落とす必要がある もしくは一気にやるか
git pull
でfetchとmergeができる
リモートリポジトリ関連 command
リモートを表示する
git remote
git remote -v
対応するURLを表示
リモートの情報を詳しく確認する
git remote show <リモート名>
例:git remote show origin
リモートリポジトリを新規
git remote add <リモート名> <リモートURl>
リモートリポジトリは複数追加可能
リモートリポジトリへ送信する
git push -u 任意の名前 master
リモート名を変更
git remote rename <旧リモート名> <新名前>
リモートを削除
git remote rm <リモート名>
例 git remote rm tutorial
リモートリポジトリから情報を取得する
fetchを使う
git fetch <リモート名>
例:git fetch origin
通常はこっち
例:git fetch origin master
リモートリポジトリをローカルリポジトリにコピーする
ワークツリーは変わらない
取得したコミットをワークツリーに反映
git merge origin/master
*git fetch
した内容はremotes/origin/<ブランチ名>
*に登録される
git branck -a
で確認できる
pullを使う
リモートの情報取得をマージを一度に行う
git pull <リモート名> <ブランチ名>
例: git pull origin master
上記の例はgit pull
で省略可能
pullは挙動が特殊。pullすると現在いるブランチにmergeする
予想外のブランチに統合する可能性があるので基本fetchを使う
rebase
型のpull
git pull --rebase <リモート名> <ブランチ名>
git pull --rebase origin branch