【Git】GitやGitHubでよく使うコマンド一覧
こんばんは。
今回はGitやGitHubでよく使いそうなコマンドをまとめておきます。
自分のメモ的な意味合いもありますが、これさえ覚えておけば基本的な部分は全部出来るようにしたいと思います。
絶対に使うコマンド
git init
まずはこれ。基本ですね。リポジトリを作成し、.git ディレクトリを作成します。
git clone "URL"
既存のリポジトリをクローンします。この場合はinitを行う必要はありません。
git remote add origin "URL"
リモートリポジトリに対し、後述するpushやpullをするときにいちいちURLを打つのは非常に面倒なので、このコマンドでリモートリポジトリに対し名前を付けます。
普通はoriginとします。なお、cloneしたときは自動でoriginという名前が付けられます。
git status
変更が加えられたファイルの状態を表示します。
git add ファイル名
コミットするファイルを指定(ステージング)します。
「git add .」で新規作成された、もしくは変更されたファイルをaddします。削除されたファイルはaddしません。
「git add -u」は、一つ前と最新のステージを比較して、変更があった部分のみをaddします。新しく追加されたファイルはaddしません。
「git add -A」は上記2つを組み合わせたものです。新規作成、修正、削除全てのファイルをaddします。
uはupdate, aはallですね。
git rm ファイル名
ファイルを削除する。
ディレクトリの中を再帰的に削除する場合は
git rm -r ディレクトリ名
とする。また、ハードディスク上にはファイルを残しておきたいが、ステージングエリアから除外したい場合は、
git rm --chached ファイル名
とする。
git mv old.txt new.txt
old.txtからnew.txtにリネームする。
file.txt をdirディレクトリに移動するには、
git mv file.txt dir
とする。
git commit -m "メッセージ"
変更点をコミットします。「-m」オプションでターミナル上からメッセージを書けます。
git pull リモートリポジトリ名
git push リモートリポジトリ 送信するブランチ:送信先ブランチ
リモートリポジトリに自分のリポジトリの内容を送信します。
送信先ブランチを省略すると、送信するブランチと同じブランチを指定します。
また、送信先ブランチが存在しない場合は、新たに作成します。
git push -u origin master
ちなみに、上のようにuオプションを付けると、次回から git push だけで勝手に origin master でpushしてくれるようになるので便利です。
git push リモートリポジトリ :削除するブランチ
pushを応用し、送信するブランチを空にしてリモートのブランチを指定すると、リモートのブランチを空にする(削除する)ことが出来ます。
git remote
リモートリポジトリを表示します。
「-v」オプションでより詳細の情報を得られます。
git branch git branch -a git branch -d ブランチ名
現在のブランチの情報を表示したり、ブランチの作成を行います。
「-a」オプションをつけると、リモートのブランチも見ることが出来ます。
また、「-d」でブランチの削除が行えます。
git checkout git checkout -b br1
ブランチの切り替えを行います。
「-b」オプションをつけると、指定したブランチを作成し、そちらに移動します。
git checkout . # カレントディレクトリに含まれる全てのファイルが対象 git checkout hoge.html # 特定のファイルが対象
checkoutを利用してこのように指定すると、指定したディレクトリやファイルを最後にコミットした時点まで戻すことが出来ます。
間違って変更を保存したときなどに便利です。
git merge ブランチ名
現在のブランチと指定したブランチのマージを行います。
よく使うコマンド
リポジトリの作成に関わるコマンド
git fsck --full
リポジトリの正当性チェックを行います。リポジトリが破損した場合に使います。
「--full」と付けることで完全なチェックを行います。
git gc
リポジトリ内の不要なオブジェクトを削除し、最適化を行います。
頻繁にやる必要はありませんが、大量にコミットやマージしたときとかにやると良いです。
リポジトリへのコミット関連
git diff
ファイルに加えられた変更点をdiff形式で表示します。
この場合は、変更はしたがステージング(git add)していないものを表示します。
「--cached」をつけると、これまでステージングされた一覧を見れます。
git log
コミットログを閲覧します。Qを打つと終了します。
git reflog
HEAD(ポインタ)の変遷を示します。つまり、コミットやmergeしたときのログを見ることが出来ます。
git reset git reset --hard HEAD@{数字}
直前のコミットを取り消します。
また、git reflog で表示された履歴を参照しつつ、「--hard HEAD@{数字}」でそのときの状態に戻すことが出来ます。
git revert "コミット名"
指定したコミット時点の状態まで戻します。こちらは、戻したという情報が履歴に残ります。
git tag
コミットにタグを付けます。
ブランチの操作(コミット以外)
git show-branch
ブランチの作成、変更、マージの履歴表示を行います。
git stash git stash list git stash pop
現在の作業ツリーの状態を一時的に保存します。
作業中の状態をコミットせずに、他のブランチを触りたいときに利用します。
listを使うと、一時保存されている作業リストを確認できます。
popを使うと、別のブランチへチェックアウトしたときに再度一時保存したブランチを呼び出すことが出来ます。
git rebase ブランチ名
現在のブランチと指定したブランチとが分岐し始めたコミットを探し、そこから現在までの全てのコミットを指定したブランチに適応します。
mergeは、履歴までをマージしませんが、rebaseは全てをマージします。
mergeとrebaseの違いを図にすると以下のような感じです。
- marge
- rebase
ちなみに、マージ実行時に non fast-forward オプションをつけると、以下のようなブランチを作成することが出来ます。
このオプションを付けないと、ブランチはただ以下のように移動するだけです。
このオプションを付けることにより、ブランチが残るので履歴をたどりやすいです。
なお、mergeとrebaseの違いについては、こちらのサイトに詳しく書いてありますので、是非参照してください。
以上です。
また使いそうなコマンドが出てきたら追記していきたいと思います。
それでは。
参考にさせていただいたサイト
GitHubを使ってみよう!導入と簡単な流れ、よく使うコマンドなど。 - YATのBLOG
Gitを使いこなすための20のコマンド | SourceForge.JP Magazine
git add -A と git add . と git add -u の違い - nekovaの日記
ブランチの統合【ブランチ】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
今さら聞けないgit pushコマンド - shoma2da's diary
git/git mergeを元に戻す方法 - TOBY SOFT wiki
`git push -u` オプションの意味 - Qiita
Gitのcheckoutでローカルのファイルを戻す - console.lealog();