####Udemyの講座を受講したので備忘録としてまとめてみた
もう怖くないGit!チーム開発で必要なGitを完全マスター
##Gitの設定
初期設定
% git config --global <内容> //pc全体の設定
% git config --global user.name <名前> //名前の設定
% git config --global user.email <アドレス>//メールアドレスの設定
エイリアスを設定し入力コマンドを短縮
% git config --global alias.<新コマンド> commit //commitコマンド設定
% git config --global alias.<新コマンド> status //statusコマンド設定
% git config --global alias.<新コマンド> branch //branchのコマンド設定
% git config --global alias.<新コマンド> checkout //checkoutのコマンド設定
##リポジトリ作成
% git init
##ブランチ操作コマンド
% git branch //ブランチの一覧表示
% git branch <ブランチ名> //ブランチの追加
% git checkout <ブランチ名> //ブランチの切り替え
% git checkout -d <ブランチ名> //ブランチを追加して切り替え
% git switch -c <ブランチ名> //ブランチを追加して切り替え
% git branch -m <ブランチ名> //<ブランチの名前変更>
% git branch -d <ブランチ名> //ブランチの削除
% git branch -D <ブランチ名> //ブランチの強制削除
##リモートリポジトリ(GitHub)の操作コマンド
% git remote add <github url> //新規追加
% git remote add origin <github url> //URLを別名(origin)で新規追加
% git remote //リモートリポジトリ名の表示
% git remote -v //リモートリポジトリのURLの表示
% git remote show <リモート名> //リモートリポジトリの詳細情報を表示
% git remote rename <旧リモート名><新リモート名> //リモートリポジトリ名の変更
% git remote rm <リモート名> //リモートリポジトリの削除
##GitHubにpushするまでの流れ
% git status //変更内容の確認
% git add <ファイル名> //変更内容をステージ(index)に追加
% git commit //変更内容をコミット
% git push <リモート名><ブランチ名> //変更内容をリモートリポジトリ(GitHub)へ送信
##GitHubから取り込む流れ
リモート→ローカル→ワークツリー
% git fetch <リモート名> //ファイルの取得
% git merge <リモート名><ブランチ名> //取得したファイルをワークツリーへ統合
リモート→ワークツリー
// ※HEADのブランチ確認
% git pull <リモート名><ブランチ名> //リモートから取得してmergeまでを一度に実行
##変更差分・履歴の確認
% git diff <ファイル名> //ステージ(index)に追加前の変更分
% git diff --staged //ステージ(index)に追加後(commit前)の変更分
% git log //commit済の変更履歴を確認
% git log -p <ファイル名> //commit済の変更履歴の詳細な差分を確認
% git log -n <コミット数> //表示するcommit数の指定
##変更・取り消し
// ワークツリー内の変更取り消し
% git checkout --<ファイル名>
% git checkout --<ディレクトリ名>
% git checkout -- . //ワークツリー内全ての変更の取り消し
// ステージ(index)に追加した変更の取り消し ※ワークツリーの変更は取り消されない
% git reset HEAD <ファイル名>
% git reset HEAD . //ステージ(index)に追加した全ての変更の取り消し
// 直前のcommitの変更 ※pushする前のcommit
% git commit --amend
##mergeとコンフリクトの解消
####merge
変更内容をリモートリポジトリから自分のブランチに取り込む作業のこと
####コンフリクト
mergeした際に同じ箇所の変更が競合すること
% git merge <リモート名>/<ブランチ名> //リモートリポジトリから変更を取り込む
####コンフリクトの解消
① コンフリクトが起きた箇所の内容を書き換える
② 「<<<」 「===」 「>>>」 の記述を削除する
##リベース
変更履歴を一直線に整えて取り込む
% git branch
master2
* master
% git checkout master2
% git rebase master
% git checkout master
% git merge master2
commit履歴の書き換え
% git rebase -i HEAD~<コミット数(3)>
pick a0ca45c github 追記
edit 91f7a7e master2新規作成 //先頭のpickをeditに変更
pick 53118f1 masterを新規作成
% git commit --amend //変更したい内容を修正後
% git rebase --continue //次のコミットへ移動 ※今回editは1つのみのため終了
複数のcommit履歴をまとめる
※squashに指定したcommitと直前のcommitがまとめられる
% git rebase -i HEAD~<コミット数(3)>
pick a0ca45c github 追記
squash 91f7a7e master2新規作成 //先頭のpickをsquashに変更
squash 53118f1 masterを新規作成 //先頭のpickをsquashに変更
##タグ
% git tag <タグ名> //タグの作成
% git tag -a <タグ名> -m <メッセージ> //注釈付きタグの作成
% git tag <タグ名><コミット名> //過去のcommitにタグを作成
% git show <タグ名> //タグのデータを表示
% git push <リモート名><タグ名> //タグをリモートリポジトリに送信
% git push < リモート名> --tags //タグを一斉にリモートリポジトリに送信
##stash
作業の一時避難
% git stash //作業を一時避難
% git stash list //避難した作業の確認
% git stash apply //避難した作業の復元
% git stash apply --index //ステージ(index)の状況も復元
% git stash drop //避難した最新の作業を削除
% git stash drop <スタッシュ名> //避難した特定の作業を削除
% git stash clear //避難した全ての作業を削除
##まとめ
下記の講座ではより分かりやすく図解で表現されています。
基礎の基礎を理解できるためおすすめです。