gitコマンドのまとめ
個人的な話
こちらのブログを更新するのは、超久々です。笑
色々とありまして、業界完全未経験ですが、2018年10月から自社サービス系の企業様のもとで働くことになりました。 (このブログは、自分のメモを残しておくために使うことにしたので、一番最初の記事以外削除しました。)
一般的には(?)、未経験から自社サービス系の企業に転職するのは所謂「成功」なのですが、もし試用期間で切られたら恥ずかしいので(笑)、「どういう風に転職活動をしたか」みたいな講釈を垂れるつもりはまだありません。
(そういう話はtwitterのDMで承ります→ ヒロアキ@twitter)
本題
今回は、タイトルにもあるように、gitコマンドを自分なりにまとめようと思います。
理由は、「入社前に復習しといて」と言われたのと、未だにググりながら使うことが多いからです。
一応、udemyで講座を修了したのですが、やはりアウトプットしないと覚えませんね(^^;)
という訳で以下にコマンドと、gitの注意点がつらつらと続きます。
完全に自分用のメモなので、qiitaの記事とか見た方が分かりやすいと思います。笑
git init //空のgit repositoryが作成される git remote add <remote name> <repository URL> //<remote name>というショートカットで、URLのリモートリポジトリを登録する git remote show <remote name> //リモートリポジトリの確認 git remote rename <old name> <new name> //リモートリポジトリの名前を変更する git push --delete <remote name> <branch name> //リモートブランチを削除する git remote rm <remote name> //リモートリポジトリを削除する git clone <repository URL> //URLのリモートリポジトリのコピーを作成する git add <change file> //変更をステージに追加する git commit -m "<message>" //変更を記録する(メッセージを書く) git commit -v //変更を記録する(エディタで記録) git status //変更されたファイルを確認する git status -sb //上記の簡易表示版 git diff //変更差分を確認する(git addする前のファイルのみ。) //後ろにファイル名を付ければ、そのファイルのみの差分を確認できる) git diff --color-words //変更差分を確認する(より細かい単位で) git diff --staged //変更差分を確認する(git addした後のファイル) git log --oneline //一行で、変更履歴(コミットメッセージ)を確認する git log --graph //ツリー状(?)にコミットログを表示する git log --stat //変更ファイルの表示 git log <commit ID> -p <file> //ファイルの変更履歴を確認する git log -n <number> //表示する履歴数を指定する git log <remote>/<branch> //remoteのbranchのコミットログを確認する git rm <file> //ファイルの削除を記録する git rm --cached <file> //リポジトリにあるもののみ削除(ワークツリーは削除されない) git mv <file> //ファイルの移動を記録する git push <remote name> <branch name> //ローカルリポジトリの内容をリモートリポジトリに送信する、ローカルブランチをリモートリポジトリのブランチとして追加する git pull <remote name> <branch name> //リモートリポジトリの内容をローカルリポジトリとワークツリーにコピーする git checkout -- <file> //ファイルの変更を取り消す。git addする前におこなう。 git checkout <commitID> <file> //特定のコミットまでファイルの状態を戻す。 git clean -n //Untracked filesを削除するのに使う。-nオプションは、ファイルの確認のみで実際には削除しない。 git clean -f //Untracked filesを削除する。ディレクトリも削除する場合は、-fdとする。 git reset HEAD <file> //git addしたファイルをステージから消す。ワークツリーになされた変更はそのまま。 git reset --soft HEAD^ //直前のコミットを取り消す git reset --hard <commit ID> //特定のコミットに戻す git commit --amend //直前のコミットを修正する。 //viで編集します。 git commit --amend -m "<commit message>" //上記と同じ意味 git rebase -i HEAD~数字 //2つ以上前のコミットメッセージを修正する時に使用。 //viが立ち上がるので、修正したいコメントのpickをeditに変更後、 //git commit --amendで修正 → git rebase --continue(複数修正する場合は、都度git rebase --continueする) git branch //ブランチの表示 git branch <branch name> //新しいブランチを作る git branch -m <new branch name> //自分が作業しているブランチの名前を変更する。 git branch -d <branch name> //ブランチを削除する。 git checkout <branch name> //ブランチの切り替え git checkout -b <branch name> //ブランチの新規作成と、そのブランチに切り替え git fetch <remote name> <branch name> //リモートリポジトリのbranch nameの内容をローカルリポジトリにコピーする git merge <branch name> //branch nameの内容を現在のブランチに合流させる git merge <remote name>/<branch name> //git fetchしてきたブランチを現在のブランチに合流させる git rebase <branch name> //現在のブランチの基点となるコミットをbranch nameに変更する git cherry-pick <commit ID> //commit IDのコミット分の変更のみ現在のブランチに取り込む git tag //タグの一覧を表示する git tag -a -m "<message>" //現在のブランチの最新のコミットに、署名などの情報付与型のタグの作成 git tag <tag name> //現在のブランチの最新のコミットに、タグの作成 git tag <tag name> <commit name> //コミットにタグを後付けする git show <tag name> //タグの詳細内容を表示 git push <branch name> <tag name> //タグをリモートリポジトリに送信する git push <branch name> --tags //全てのタグを送信する git stash //現在、変更しているファイルを一時的にステージ・ワークツリー上から避難させる git stash save <message> //コメント付きで避難させる git stash -u //追跡していないファイルも避難させる git stash list //避難した作業を確認する git stash apply <stash name> //避難させた作業を復元する。EX-git stash apply stash@{0} git stash drop <stash name> //避難させた作業を削除する git stash clear //全作業を削除する git revert <commit ID> //git pushした後のコミットを打ち消すコミットの生成。これの後にpushし直す。 git revert -n <commit ID> //コミットを伴わないgit revert(通常ではgit revertした直後にコミットが生成される。注意点として、この後コミットするファイル群が打ち消される。コミットしないのはそのままリポジトリに残る)
※注意点
・git pullは基本的に使わない。
→取得するリモートリポジトリのブランチがローカルリポジトリの異なるブランチを上書きしてしまう場合がある。
・コンフリクトしたらファイルの中身を書き換えるか、「>>>」「===」「<<<」を消去する。
→git add
→git commitで解決
・そもそもコンフリクトが起きないようにするには、、、
→複数人で同じファイルを編集しない。
→pull , mergeの前にcommit , stashをしておく。
→pullする時は必ずgit branchする
・git pushしたコミットをgit rebaseしない
→やってしまうと、push出来なくなる
→pushする前はrebaseを使い、した後はmergeするとコンフリクトを防ぎ易い
・基本的な開発手順
・git cloneをする
→branchを確認する(git branch)
→開発用に新しいbranchを切って、移動する(git checkout -b branch name)
→不安だったら移動先のbranchにいるか確認(git branch)
→リモートリポジトリにbranchを追加(git push remote name branch name)
→その状態のままコードを書く
→addしてcommitする(git add, git commit)
→自分の担当部分が終わったらpushする(git push remote name branch name)
→Pull Requestを出す
→mergeされたのを確認したら初めのbranchに戻る(git checkout branch name)
→localでいままで作業していたbranchを削除する(git branch -d branch name)
→他の人の開発分を取り込む
(git fetch remote name branch name, git merge remote name/branch name)
・以前のコミットに戻るやり方
$ git log --oneline //戻りたい位置のコミットIDの探査 $ git show <commit ID> //コミットIDの確認 $ git reset --hard <commit ID> //指定したコミットIDまでバックする
che = checkout bra = branch sta = status glog = log --graph log5 = log -n5 --oneline --graph log10 = log -n10 --oneline --graph cb="git rev-parse --abbrev-ref HEAD"
cb="git rev-parse --abbrev-ref HEAD"
の詳細は
退屈なgit commitの定型文はGitフックにやらせよう - Qiitaを参照してください
これからエンジニアを目指して
エンジニアを目指して勉強中の身ですが、自身の成長を記録したいと思い、
ブログを始めることにしました。