ストックドッグ

KatoTakahiro。金融系の会社で働くSEが株やPython、その他諸々について書いています。サービスも運営してます→http://fmbrain.work

gitのコマンドをサラッと復習

バージョン管理をするさいには必需品であるgit。
そのgitをインストールしてから、ある程度の操作までをサラッと簡単な説明付きでまとめました。

ドットインストールのgit入門を参考にしています。

http://dotinstall.com/lessons/basic_git


gitをインストール!!

conda install git

無事、インストール完了しました。

git --version

このコマンドで、git version 2.6.4と確認できます。

git config --global user.name "ユーザーネーム"
git config --global user.email "メールアドレス"

gitでは、管理するためにユーザーネームとメールアドレスが必要です。
メールアドレスを入力したからと言って、とくに確認メールが来るわけではなさそうです...
まだメールが届いていないだけかな。

git config --global color.ui true

この設定をしておくと便利なそうです!
とりあえず、設定しておきましょう。

git config -l

このコマンドで、gitでの設定が確認できます。
ユーザーネームとメールアドレス、あとcolor.uiを設定したので、この3つが今のところ表示されるはずです。

git config --help
git config
    • helpでマニュアルが表示されます。

表示をやめるにはqを押せば、もとの画面に戻れます。
ただ、ちょっと量が多いです。
git configだけで打ち逃げすれば、簡単な操作一覧が表示されます。
f:id:doz13189:20160831080149p:plain



実際にgitを使ってみる!

mkdir git #gitというフォルダを作成
cd git #gitフォルダに入りました

まず、gitを使いたいディレクトリに入ります。

git init

gitを使いたいフォルダに入ったら、そこでinit。
ここでgitを使いますよ、という宣言です。

Initialized empty Git repository in /home/user/serv/git/.git/

こんな感じのテキストが端末上に表示されれば、OK。

ここでgitの管理の仕組みを理解しておく必要があります。
ファイルを作ったり、修正するたびにgitに保存するのですが、保存に段階があります。

  1. 作業ディレクト
  2. インデックス
  3. リポジトリ

この3つです。
作業ディレクトリは今、作業している場所です。
ある程度、作業にキリがついたらインデックスに保存します。

とりあえず、何かファイルを作ってフォルダに保存してみましょう。
.pyでも.htmlでも何でもOKです。
そして、何か書いてください。

git add site.py(ファイル名)
git add .

作ったファイルをインデックスに追加してみます。
これで追加されました。
もし、複数のファイルをaddしたいときは、.を使います。
現在いるファルダより下のファイルすべてにaddを行います。
たいていは、複数ファイルに手を加えてからいっきにaddする場合が多いと思うので、多用するコマンドですね。

git commit
git commit -m "関数1を追加"
git commit --amend

インデックスに追加し、一度ファイルの状態を保存したいときリポジトリに保存します。
このコマンドを打つと、何かしらのメッセージをうつように求められます。
そこでは、どういった変更を加えたかなどを記載するとあとから見たときに便利です。
例えば、なになにの関数を追加した、やどこどこの引数を変えたなどなど。

1行ほどの短いメッセージしか残さない場合は、-mを使うと良いと思います。

もし、ほんの少しの変更でcommitするほどでもないときは --amendを使うと、ログにも残りません。
直前にほんの少し変えた位なら--amendを使います。

git log
git log --oneline

それらcommitの記録はlogと打つことで確認できます。
commitのさいに残したメッセージなどが表示されます。
1行で記録を確認したい場合は--onelineと打ちます。
短くてすぐに確認できるので、便利です。

git status

これでファイルが現在どの状況にあるのかを確認できます。

f:id:doz13189:20160831082218p:plain

modifiedとなっているのは、ファイルに変更を加えたからです。
そして、まだaddもcommitもしていなことがわかります。

git checkout -- site.py(ファイル名)

変更を取り消したいときがあります。
間違った変更をしてしまったときなど。
そういうときはcheckoutです。
一つaddが取り消され、1つ前のaddに戻ります。

git diff

インデックスに追加していない状態で、上のコマンドを打つと、変更前と変更後の差を表示してくれます。

git diff --cached

インデックスに追加したあとなら、このコマンドです。

git mv site.py

gitからファイルを削除したいときはmvです。
gitに登録したファイルは、消すときはgitから消すようにしましょう。
gitに黙って、普通のファイル操作で消してしまうと、gitが混乱してしまうからです。


過去のバージョンに戻る

これぞgitの真骨頂ですね。
寝ぼけて書いてしまった、調子に乗って変なコードを書いてしまったなどなどをなかったことにすることができます。

git reset --hard 61c252d5250d3599e6fc0645f21a1dbd34a55a4f

logでcommitを確認します。
するとcommitごとに文字の羅列のようなIDが割り当てられていると思うので、戻りたいcommitのIDを指定します。
これで消したい過去は消え去り、平和が訪れます。


異なるバージョンを同時並行で開発したいとき

git branch

異なるバージョンの開発を同時並行したいときはbranchです。
上のコマンドを打つと、☆maseter が出てくると思います。
この☆があるところが、今自分がいる場所です。
現在は、一つしかバージョンはないのでmasterになっているはずです。

git branch ver-geho
git checkout ver-geho

これでver-gehoが作られます。
しかし、今はまだ master にいるので、checkoutで移動しましょう。
これで2つのバージョンができたので、2つを行き来しながら同時並行で開発をすすめることができます。

git merge ver-geho

もし、バージョンを統合したい時。これをgitではマージと言いますが、マージしたいときは上のコマンドを打てはOKです。
ある程度、開発が進んできて、上手くいきそうだからマージしよう、という場合はあると思います。

git branch -d ver-geho

これでマージが完了しました。
もう、ver-gehoがいらない、っとなったら消しましょう。
上のコマンドで消すことができます。


タグの使い方

commitって長くて、わかりにくいですよね。
そういうときにはタグを使います。

git tag ver1.0
git tog ver0.9 e16870ca7f9d58a7fa6508416abf4421789c9324

これをすることで直近のcommitにver1.0というタグがつきます。
特定のcommitにタグをつけたいときは、commitのIDを指定してあげましょう。
IDは長いので、全部じゃなくてもいいみたいです。
ある程度、IDが特定されるくらいの長さを適当にコピーして貼っつけましょう。

git show ver1.0

これでver1.0のcommitが確認できます。
短くて、便利なので主要なcommitにはつけておいてもいいと思います。


以上がgitの基本操作でした。