よく使う Github のコマンド備忘録
自分は、もはやGitHub が無い生活は考えられないくらいこのサービスの恩恵を受けているが、日常的に使わないコマンドはいつもうろ覚えで、ネット検索にお世話になっている。いい加減おぼえろやと自省して、いつも忘れがちになるコマンドをまとめておく。
1. ローカルリポジトリを作成してリモートに push
まずはローカルレポジトリを作成したい場所までターミナル上で移動して、'git init' を実行。続けて、普通に 'git add' から 'git commit' まで実行してしまう。(ファイル数0から始める場合は、'git add' 前に適当なファイルを作っておく。)
% git init
% git add .
% git commit -m "適当に first commit などのコメント"
次に push 先となるリモートのリポジトリをGitHub上で作成し、ローカルからアドレスを指定して紐付けを行う。(アドレスの指定は SSH で行うのがお勧め。push の度に、ユーザ名とパスワードを入力する手間が省ける。但し、事前にローカル環境で公開鍵と秘密鍵のペアを作成し、このうち公開鍵を GitHub に登録しておく必要がある。)アドレスは、GitHub のレポジトリ毎のページに記載があるので、それをコピペ。
% git remote add origin 紐付けするリモートリポジトリのアドレスを 'HTTPS' または 'SSH' で指定
最後に 'git push' を実行。実行時に、'-u' または '--set-upstream' のオプションをつけることで push 先のブランチがトラックされ、これ以降 push や pull のデフォルトの対象先として設定できる。
% git push -u origin master
% git push --set-upstream origin master
2. commit を安全に取り消す
'git reset' では、commit が削除されてもはや最初から無かったことになってしまう。これは、かなり危険なのであまり多用したくなく、作業がかなり進んだ段階では、'git revert' だけを普段使うようにしている。
- ID を指定して取り消す場合、
% git revert <commit ID>
- 直前の commit を取り消す場合、
% git revert HEAD
'git revert' 自体の変更履歴が残るので、それ自体取り消してまた 'commit' 後の状態に戻れたりと、作業の取り返しが何度でも可能。既にリモートに 'push' した後の 'commit' を取り消した後は、pushも忘れずに。('git revert' 自体が、新しい 'commit' の追加になるので、 '-f' オプションは不要。)
% git push origin master
なお、直前より前の 'commit' を取り消すと、その後の 'commit' の内容に同一ファイルの変更が含まれる場合などにコンフリクトが発生し、カオスな状態に陥り易くなるため、直前以外の 'revert' を多用する際は注意したい。
3. ローカルの変更を破棄
ローカルで幾つか変更を加えて save するものの、何かモヤモヤして git に展開する前に元に戻したくなる時がたまにある。そんな時に使うコマンド。
- ファイル名を指定して一つずつ変更を破棄する場合、
% git checkout <filename>
- 全てのファイルの変更を破棄する場合、
% git checkout .
まあ、ひとまずこんなところで・・・。まだまだ 'merge' だとか'rebase' だとか色々あるが、機会を見つけて本ページ内に追記していきたい。