●
2015 年のエンジニアに Git は欠かせない。
っていうフレーズを読んで以来、そのGitというものが気になっていてな。最近そろそろと手を出してみたらクッソ便利じゃんこれ。バージョン管理システムっていうらしいぜ。つまりは、スクリプトのバックアップがとれるわけだろ? しかもフォルダ単位でカンタンに。そしてそのバックアップの履歴を見ることもサクサクできて、そのバックアップ群をどっかのサーバに上げれば他の人と更新をいっしょにできるんだろ? サーバとかよくわからんから俺には関係ないな、ってちょっと思ったけどそれってDropboxでもできるんだろ? だったら全然できちゃうよ。
しかも、ブランチってシステムを使えば、上書きしあっちゃったりしないようにできるんだろ? すげーな。エンジニアではなくても全然有用じゃん。
というわけである程度使ってみて、よく使ったコマンドとかエイリアスとかノートしとく。
●
■ 準備
- インストールするまで
- $ brew doctor
- $ brew install git
- $ git --version
- Gitのテキスト入力を相棒のSublime Text3で行う準備
- $ ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl
- $ git config --global core.editor "subl -w"
- 設定をする
- $ git config --global user.name Midoriiro (ユーザ名登録)
- $ git config --global user.email メアド (メアド登録しないと使えなかったような気がする)
- 上のを打つとユーザフォルダに .gitconfig ができるので [alias] 項目を作ってエイリアスを書く。俺はこんなのを用意してみた。
- graph = log --graph --date=short --pretty='format:%C(yellow)%h %C(green)%cd %C(blue)%an%C(red)%d %C(reset)%s' --all
- graph5 = log --graph --date=short --pretty='format:%C(yellow)%h %C(green)%cd %C(blue)%an%C(red)%d %C(reset)%s' --all -n 5
- graph10 = log --graph --date=short --pretty='format:%C(yellow)%h %C(green)%cd %C(blue)%an%C(red)%d %C(reset)%s' --all -n 10
- stt = status -uno
- diffno = diff --name-only
- diffwd = diff --word-diff
- co = checkout
- br = branch
- inicom = commit --allow-empty -m 'Initial Commit.'
- adda = add --all
●
■ 実用(上のエイリアスを適用しているものとする)
- 基本
- $ git init (開始)
- $ git inicom (空っぽで保存)
- $ git adda (全部ファイルをステージング)
- $ git commit -m "保存コメント" (保存)
- $ git commit --amend (ひとつ前のコミットを修正)
- $ git stt (状態確認)
- $ git graph (コミット履歴を見る)
- $ git diffno リビジョン番号 リビジョン番号 (リビジョン間でどのファイルが変更されてたっけなって確認)
- Gitに含まないファイルの登録
- .gitignoreを作成する。「python gitignore」でググったらよいのが出てきたので使わせてもらった。
- $ git rm -r --cached (.gitignoreが反映されないとき)
- ブランチを作って作業
- $ git br ブランチ名 (新しいブランチ作る)
- $ git co ブランチ名 (作ったブランチに移動)
- $ git merge --no-ff 取り込むブランチ名 (ブランチを今のブランチに吸収)
- $ git br -D ブランチ名 (いらんブランチを削除)
- masterブランチの内容を他ブランチに反映させたいとき
- pullとかでmasterを最新状態にする。
- 他ブランチに移動する。
- $ git rebase master
- コンフリクトが起きたらそれを解消する。
- $ git add コンフリクトしたファイルのパス
- $ git rebase --continue
- やっべ間違えたってとき
- $ git reflog (戻る履歴のリビジョン番号を確認する)
- $ git reset --hard リビジョン番号 (指定したところまでフォルダをリセットする)
- $ git co リビジョン番号 -- ファイルパス (ファイル単位でリセットする)
- リモートリポジトリを使う(俺はDropboxでやってみた)
- まずcdコマンドとかで対象フォルダまで行く。
- $ git init --bare --shared=true (フォルダをリモートリポジトリに)
- ローカルリポジトリへ戻る。
- $ git remote add リモートリポジトリ名 リモートフォルダまでのパス (リモートリポジトリを登録)
- $ git remote rm リモートリポジトリ名 (いらんくなったら消す)
- $ git push リモートリポジトリ名 ブランチ名 (ローカルの保存履歴をリモートに上げる)
- 他のPCでリモートの保存履歴を引っ張ってくる
- $ git init
- $ git clone リモートフォルダまでのパス (最初の一回はこう。DLみたいなもんか)
- $ git pull リモートリポジトリ名 ブランチ名 (二回目以降の履歴更新)
●
とりあえずこのあたりを使って、Mac-Windows間のスクリプト移動、更新をやってみてる。外部のPCにデータを置くとなるとサーバが必要になってくる、みたいな思い込みがあったので、Dropboxで大丈夫ってのは目ウロコだったぜ。