Git操作まとめ(Git機能集)
Gitの歴史
作者:リーナス・トーバルズ linuxの製作者 2005年ころにGitの原型を開発
GitHubとは
- ローカルは3つのエリアに分かれている
- リポジトリ
- スナップショットを記録
- ステージ
- コミットする変更を準備
- ワークツリー
- ファイルを変更する作業場
- リポジトリ
- リポジトリに「圧縮ファイル」「ツリー」「コミット」ファイルを作成することでデータを保存している
- コミットが親コミットを持つことで変更履歴を辿れる
- Gitの本質はデーターを圧縮して、スナップショットで保存
Gitのはじめかた
git init
とうつ.gitディレクトリ
が作成されるGitHub上から持ってくる
git clone
ステージに追加
git add ファイル名 git add ディレクトリ名 git add . ←すべて追加する場合
コミットする
git commit -m "メッセージ" git commit -v ←エディタが立ち上がる
コミットメッセージの書き方
1行目 変更内容の要約 2行目 空行 3行目 変更した理由
現在のファイル変更状況を確認
git status 変更されたファイルが確認できる ワークツリーとステージで変更されたファイル リポジトリとステージで変更されたファイルが確認できる
変更差分、内容を確認
# git add する前の変更分 git diff # git add したあとの変更分(ステージしたけどまだコミットしていない分が見れる) git diff --staged ワークツリーとステージの差分確認が`git diff` ステージとリポジトリの差分確認が`git diff --staged`
変更履歴を確認
git log #一行で表示 git log --oneline # ファイル変更差分を表示 git log -p ファイル名 # 表示するコミット数を制限する git log -n コミット数
ファイルの削除を記録する
# ファイルごと削除 git rm ファイル名 git rm -r ディレクトリ名 #git上からのみ削除したい場合、リポジトリ上の削除 git rm --cached ファイル名
ファイルの移動を記録する
git mv 旧ファイル 新ファイル
GitHubにpush
- git remote add origin https://~
originというショートカットでurlのリモートリポジトリを登録
今後はoriginがリモート名という形で、GitHubリポジトリにアップしたり取得できる
リモートリポジトリへ送信
git push リモート名 ブランチ名 git push origin master
.gitignoreファイルに指定
.gitignoreファイル書き方 # 指定したファイルを除外 index.html # ルートディレクトリを指定 /root.html # ディレクトリ以下を除外 dir/ # /以外の文字列にマッチ 「*」 /*/*.css
ファイルへの変更を取り消す
git checkout -- ファイル名 git checkout -- ディレクトリ名 # 全変更を取り消す git checkout -- . # 「.」は任意のファイルすべて # 「--」はブランチ名とファイル名がかぶった場合、区別するためつける
ステージに追加した変更を元に戻したいとき
git reset HEAD ファイル名 git reset HEAD ディレクトリ名 # 全変更を取り消す git reset HEAD . #「HEAD」最新のコミット、つまり最新のコミットに上書きする
直前のコミットをやり直す
git commit --amend # リモートリポジトリにpushしたらやり直しはだめ amend・・・修正する 修正したファイルをaddしたあとにgit commit --amendして一緒にまたgit commitする感じ
リモートを表示
git remote # 対応するURLを表示 git remote -V
リモートリポジトリを新規追加
git remote add リモート名 リモートURL git remote add bak https://~ git push -u bak master
リモートから取得(fetch)
git fetch リモート名 # リモートリポジトリからローカルリポジトリに取得するだけで、ワークツリーには反映されない git fetch origin # ワークツリーに反映 git merge origin/master fetcnがおすすめ
リモートから取得(pull)
#fetchとmergeをまとめてるだけ git pull
リモートの詳細を表示
git remote show リモート名 git renote show origin
リモート名を変更 削除
# 変更 git remote rename 旧リモート名 新リモート名 git remote rename tutorial new_tutorial # 削除 git remote rm リモート名 git remote rm new_tutorial
ブランチを新規作成
git branch ブランチ名 作成するだけで切り替えはしない
ブランチ表示
git branch git branch -a # すべてのブランチを表示
ブランチを切り替える
git checkout 既存のブランチ名 # ブランチを新規作成して切り替える git checkout -b 新ブランチ名
変更履歴をマージ
git merge ブランチ名 git merge リモート名/ブランチ名 git merge origin/master
コンフリクト解決
<<<<<< HEAD HEADの変更分 ====== featureの変更分 >>>>>>feature ①残したいもの以外消す
ブランチ名を変更 削除
#変更 git branch -m ブランチ名 自分が作業しているブランチの名前を変更 # 消去 git branch -d ブランチ名 masterにマージされていないと消せない # 強制消去 git branch -D ブランチ名 masterにマージされていないと消せる
プルリクエスト流れ
①masterブランチを最新に更新 ②ブランチを作成 ③ファイルを変更 ④変更をコミット ⑤githubへプッシュ`git push origin ブランチ名` ⑥プルリクエストを告る ⑦コードレビュー ⑧プルリクエストをマージ ⑨ブランチを削除
リベース
git rebase ブランチ名
タグづけ
一次避難
作業が途中でコミットしたくないけど別のブランチで作業しないといけない 一時的に保存する
git stash stash・・・隠す ワークツリーとステージの変更がなかったことになってブランチが切り替わる。
避難した作業の確認
git stash list
避難した作業の確認
# 最新の作業を復元 git stash apply # ステージの状況も復元 git stash apply --index # 特定の作業を復元 git stash apply スタッシュ名
避難した作業の削除
# 最新の作業を削除 git stash drop # 特定の作業を削除 git stash drop スタッシュ名 # 全作業を削除 git stash clear
Collapse