jekylog

All doggs wanna be a Geek

Git使い始めた

※複数人での運用は勉強中。とりあえずローカル運用とかgithubで管理する場合のみ想定。

まずはGitをインストール

一度Windowsにはインストールして使ってたけど暫く使ってなかったので改めてインストールした。 Macの場合はMacPortsとかHomebrewからインストールしたほうが良いかも。

ちなみに上記だとWindow版は「Use Git Bash only」にチェックしてるけどコマンドプロンプトからも使いたかったので「Run Git from the Windows Command Prompt」にチェックした。その他は解説の通りの設定にした。 ちなみに簡単な英語だけどどうも分からんって場合は「Git インストール」とかでググると色々出てくる。 下記なんてデザインからしてシャレオツ。

Git概要

バージョン管理っていうと他にはSVNとかあるけど、プロジェクト管理ツールのbacklogで使ったことがあるくらいでGitは自分もまだ何となくしか分かってない。

そもそもGitって?

Git - Wikipediaにはこうある。

Git(ギット)はプログラムなどのソースコード管理を行う分散型バージョン管理システム。

いやバージョン管理システムって?

バージョン管理システム - Wikipediaにはこうある。

バージョン管理システムの最も基本的な機能は、ファイルの作成日時、変更日時、変更点などの履歴を保管することである。これにより、何度も変更を加えたファイルであっても、過去の状態や変更内容を確認したり、変更前の状態を復元することが容易になる。

まあようはhtmlファイルとかをちまちま「backup0423」とかって名前でバックアップしてたのをGit使うともっとシャレオツに出来ますよって感じらしい(他にも色々あるんだろうけど)。そのかわり苦手な黒い画面を使うことになるのがなかなか手を付けれない理由になってると思う。

とりあえずGitを使ってみる

$ cd 管理したいディレクトリ # ここではindex.htmlのみ格納されている
$ git init

とりあえずこれだけでこのディレクトリはバージョン管理できる状態になった。 ちなみに元々リポジトリがある場合は下記のように。

$ git clone /path/to/repository # ローカルの場合
$ git clone username@host:/path/to/repository # リモートの場合

とりあえずローカルリポジトリが出来たので試しにファイルを編集してみる。

$ vim index.html # なんか適当に編集(ここではtitleタグを編集した)
$ git status # 変更箇所を確認、addするものがあればaddしておく
$ git commit -m 'Edit title' #どんな編集をしたかを簡潔に記述

で、リモートからクローンしてた場合は、

$ git push origin master

リモートからクローンしておらず、これからリモートに登録する場合は、

$ git remote add origin <server>

する。これでリモートとローカルが同期された。

ちなみに肝心のバックアップとかはタグやらブランチってのを使う。多分タグを使ってバージョン管理して、開発用のブランチ作って作業するとかが正解?なんだろうけどタグがいまいち慣れてないんでとりあえずブランチだけでやってみる。

$ git branch dev # devというブランチを作る
$ git checkout dev # devというブランチを作業ディレクトリにする

こんな感じでdevブランチを作成して作業する。 作業が完了したら適宜addやcommitしておいてmasterとmergeする。

$ git checkout master # masterブランチに戻る
$ git merge dev

ちなみに圧縮コミットってのはブランチで何回もadd、commitしてそのままmasterにmergeすると、master側にcommitも適用されるので、ここを一回のcommitにしちゃおうてもの。

$ git checkout dev # devブランチを作業ディレクトリにして複数回修正を加える
$ git checkout master # masterブランチに戻る
$ git merge --squash dev # squashオプションがポイント
$ git commit -m 'いろいろやりました'
$ git log # 一度分のcommitしかないのが確認できる

まだこれくらいしか出来てないけどもうちょっと自由にインデックスとか作業ツリー、HEADを操作出来るようになりたい。しかも今は1人で管理してるだけだけど複数人とかってなるともっとややこしいと思うし。

下記参考リンク。

Fork me on GitHub