Git(ギット) でどういったことができるか、メリットなどは結構知っている人が多いと思うので、ここでは「コマンドやGUIなどの初歩的な部分だけを1日で使える」ようになるためのフローをポイントだけメモしておきます。
内容は知っているけど実際に使っていない人、筆者のような超初心者、分厚い本を読むのが苦痛な人、すぐに使いたいのでポイントだけサクッと教えて欲しい人対象となります。
もくじ
準備
予備知識
実践
クライアントツールとリモート
準備
準備する物3つ
とりあえず、必要な物は以下の3つ。インストールしてアカウント作成までサクサク作れます。詳細は後述します。
- Git本体
- GUI(SourceTree)
- ホスティングサービス(Bitbucket / GitHub)
GUIとはアイコンやボタンを使って直感的に操作出来るソフトです。Git本体は、後述するコマンド操作を可能にする「GitBash」を使うためにインストールします。
Git本体をインストール
[Windows] Git 最新版インストールはこちら。配布先が変わったようです。
[Mac] 最近のOSは最初からGitがインストールされているので、gitがインストールされているか「ターミナル.app」で確認します。
$ git --version
上記を入力して「git version 1.7.7.5 (Apple Git-26) 」など表示されていれば一応使えます。
※ どうしても新しいバージョンをインストールしたい場合は以下のコマンドをターミナルに貼り付けて、/etc/pathsをvimで開き/usr/local/binを最上部に追記する方法が結構早いですかね。詳細はGitではじめるバージョン管理 〜Gitをインストール for Mac OS X〜を参考に。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
リンク:Homebrew — OS X用パッケージマネージャー
インストール方法の詳細はネットに沢山情報が落ちているのでここでは割愛します。
どうしてもコマンドに抵抗があるという人は直感的に操作できるGUIクライアントツールを使いましょう。GUIツールも色々ありますが、様々な書籍やサイトの中で、これでもかというくらい紹介されており、筆者も実際に使いやすかったと感じたのは「SourceTree」でした。Win / mac版の両方あります。Gitインストール後は、とりあえずSourceTreeをインストールしてみましょう。
使い方は後述します。
Bitbucket は非公開の場所を無料で作れます(人数は5人まで)。GitHubの非公開リポジトリは有料なので、ファイル公開をしたくない人は、とりあえずBitbucketで作成します。またBitbucketは「SourceTree」と同じ開発元なので連携しやすくなっています。
予備知識
必須用語を「ひとこと」で解説
使う前に以下の用語だけでも覚えておくとスムーズです。「一言でいうと何?」という筆者みたいにせっかちな人もいるかもしれないので簡潔に解説しました。忘れたらココみる。
- リポジトリ:ファイルデータを記録する場所(自分のPC、サーバどちらも)
- クローン:ローカル(自分のPC)にサーバのファイルをコピー
- コミット:編集箇所の履歴を記録。反映
- プル:サーバのファイルをローカルに反映
- プッシュ:アップロード
- プルリクエスト:変更した内容を他者のリポジトリへ、取り込み依頼をする
- マージ:差分を精査し、複数履歴や新たな情報を統合
- フェッチ:リモートの最新履歴の取得のみ行う、マージはしない
- フォーク:中央リポジトリを自分のアカウントにコピー
- インデックス:コミットするファイルを登録する場所
- ステージ:コミット前に移動させる場所
- ワーキングツリー:現在編集しているファイル
- ブランチ:コミットの集まり。複数の作業履歴を並行して記録
- ヘッド:現在編集中のブランチの頭、作業対象
- チェックアウト:作業対象(ヘッド)を切り替える
覚え方:本来、リポジトリ(repository)は貯蔵庫、コミット(commit)は確定、マージ(merge)は合併するといった意味があります。
実践
ファイルの表示設定
最初にPCフォルダを開きます。Winで使う場合、「.git」ファイルが表示されなくなっているので、隠しファイルにチェックを入れて可視化しておきましょう。
リポジトリを作成すると「.git」というフォルダが作成されます。この中に色んな情報が保存されるんですね。ちなみに作業しているファイルを「ワーキングコピー(ツリー)」といいます。
macの場合はターミナルを起動しdefaultsコマンドを入力します。詳細はこちらMac – Finderで隠しファイル・フォルダを表示する方法 – PC設定のカルマで。
git コマンドと便利なコマンド
先ほど記載したGit本体のインストールが終わっていることを前提ですすめます。
黒い画面を開きます。ちょっとした英文字を入力したら、ダァーっと長い文字などが出てくるアレです。最初にローカルでよく使うコマンドを簡単に説明します。短いコマンドで素早く色々操作できるので覚えておいて損はありません。
前半で紹介するgit以外でも使えるコマンド(mkdir / mv / rm / cd / >>)などはファイルの基本操作なので、覚えておくと通常時やサーバ上で操作したりなど色々使えます。
まずはリポジトリを作成したいフォルダで右クリック→Git Bash Here
これでCUI(黒画面)が開きます。ちょっと叩いてみましょう。
ディレクトリ作成
mkdirは「make directory」という意味があります。
そのままの意味ですが、ディレクトリ(フォルダ)を作る場合は「mkdir」を使います。
$ mkdir sample
上記だとフォルダ名「sample」を作成します。
ファイルの作成
フォルダの中にファイル(例:xxxx.txt / xxxx.html など)を作成するにはこのコマンドを覚えておくと便利です。例えば「hello」という文章が書かれた「sample.txt」というテキストファイルを作成する場合は以下のように打ち込むだけ。
$ echo 'hello' > sample.txt
※「>」はリダイレクトと言って「内容を上書き」し、ファイルに出力するという意味です。前の記録は消えます。既存内容を残したまま追記していく場合は「>> 」を使います。
とりあえず空のファイル作るなら「touch」を使う方法もあります。
$ touch sample.txt
ディレクトリの内容を見る
それでは中身を見てみましょう。ディレクトリの中身を見るには「ls」、隠しファイルも見るには「ls -a」を使います。
$ ls
ファイルの内容を見るには「cat」でOK。
$ cat sample.txt
と入力すると内容が表示されます。
Windowsコマンドプロンプトでは「dir」で詳細を見ていましたが、先ほどインストールしたGit Bash を使うとWindowsでも「ls」を簡単に使えるようになります。(日本語ファイル名の文字化け対策に関してはここでは割愛します。)
ディレクトリの移動
ディレクトリの移動には「cd」を使います。
「Change Directory」と覚えます。
$ cd sample
上の例だとディレクトリ「sample」に移動します。一つ上の階層に上がるには「cd ..」で移動できます。
※ 蛇足かもしれないですけど、現在作業を行っているディレクトリを「カレントディレクトリ」、一番親のディレクトリを「ルートディレクトリ」(木の根っ子)といいます。コマンド「cd」はカレントディレクトリの変更に使います。ルートに移動するときは「cd /」と叩きます。
リポジトリ作成
ここからgitコマンドになります。Gitはプロジェクトごとに管理していきます。新たにプロジェクトを始めるには「init」を使い、リポジトリ(ファイルデータを記録する場所)を作成する必要があります。設定したフォルダ以下は監視・管理されます。
$ git init
「init」はイニシャライズ(初期化)するという意味。「git status」と入力すると今の状態を確認できます。
インデックスに登録
大まかなフローは、作業ディレクトリ編集→インデックス登録→コミットという流れになります。
コミットを行う前に、新規作成したファイルをインデックスに登録(ステージング)させます。「どのファイルを管理させるのか」ということですね。とりあえずコミット前には「インデックスに移動」と覚えておきます。
$ git add .
ドット「.」は変更・新規作成分を登録、「.」を「-A」に変更するとフォルダの中身を一括登録、「-u」にすると変更したファイルのみ、「-p」で変更した部分を指定して登録します。
Git 初期設定
下の○○の箇所をメアドに変更して登録しておきましょう。コミットを初めて行う前に設定をします。
$ git config --global user.email "○○" $ git config --global user.name "あなたの名前"
コミットする
コミットは「編集箇所の履歴を記録」を行うことでしたね。コミットのおかげで後々、変更したところを確認・共有したりできるようになります。
$ git commit -m "first comment"
コミットする場合はとりあえず上記を覚えておくとよいですね。コミットを元に戻す場合は「git reset」と打ち込みます。
commit後、pushする
$ git push origin master
コミット履歴を見る
$ git log
現在の状態を確認する
$ git status
ブランチを作成する
ブランチは複数の作業履歴を並行して記録することでしたね。ブランチを作成することで、複数の開発を進めることができます。
$ git branch first-branch
ブランチを表示
$ git branch -a
checkout を使い、カレントブランチを切り替えることもできます。
$ git checkout first-branch
ディレクトリからgit を外す
$ rm -rf .git
linuxコマンドでは「rm -rf」を使うとディレクトリ(中にファイルがある場合)ごと強制的に削除できます。上のコマンドを使うとディレクトリからgitを外すことができます。
ローカルにcloneする
クローンは「リモートのデータをダウンロードして、自分のPCに複製すること」でした。リモートリポジトリからローカルにcloneする場合はこちらのようにclone とURLを打ち込みます。最後にローカルディレクトリ(例:sampleというフォルダを指定)を追加することもできます。
$ git clone https://bitbucket.org/○○ sample
上の例だと○○は bitbucketのリポジトリページのurlを指定します。
貼り付けやコピー
WinのCUIの場合、最も簡単な方法としてはWindows の場合「Insert」キーで貼付け、「Git Bash」のアイコンを右クリック>編集で範囲指定やコピー・貼り付けができます。
他にも(cp / tar / vi)などよく使うコマンドが沢山ありますが一旦このへんで。
クライアントツールとリモート
SourceTreeの使い方
コマンドに抵抗がある場合、先ほど紹介したSourceTree を使います。Win / Mac 両対応で日本語対応・無料で使いやすいクライアントソフトです。
まずはリモートとローカルを連携させる方法を一つ。新規 / クローンを作成するをクリックします。
リポジトリを作成のタブを選択
保存先のパスを選択
リポジトリの削除
コマンドで削除する場合は
$ git rm sample.txt
GUIでリポジトリを削除する場合はファイルを開き、ブックマーク登録後、右クリックから削除を選び「ハードディスク上のリポジトリを削除」をクリック。
ファイルを変更したらチェックボックス「作業ツリーのファイル」にチェックを入れステージ移動させコミットします。コミット一覧を見る場合は下の方にあるタブ「ログ」を選択してください。
ポイントだけまとめると「ファイルの変更→ステージ追加→コミット」を繰り返すということになります。とりあえずこの流れを覚えます。
Bitbucketの使い方
Bitbucketは非公開リポジトリを作成できて無料です。管理画面は日本語対応なのですぐに分かると思うのでここでは簡単に説明します。
「Get Started for free」をクリック後
ユーザー名、パス、メアド等に情報を入力してサインアップで完了。
新規は上部のナビから「新規リポジトリの作成」を押します。ローカルからファイルや変更内容をプッシュした後は「左のメニュー」からソースの他、差分・コミット・変更内容などをチェック可能です。
GitHubやBitbucketにおけるSSH認証キーについては管理画面右上の「アカウントの管理」をクリック後、左メニューの「SSH キー」で鍵の追加等が可能です。
コマンドラインでSSHキーを作成する
ディレクトリを作成し、作成したsshに移動して鍵を作ります。
$ mkdir ~/.ssh $ cd ~/.ssh $ ssh-keygen -t rsa
と入力を進めていった後に「パスワードをどうするか」メーッセージが出てきますがエンターキーで飛ばしてOKです。その後秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が生成されています。pubがついている方をBitbucketやGitHubに登録します。
- [GitHub] SSHの公開鍵を作成しGithubに登録する手順 – mon_sat at Co-Edo
- [Bitbucket] SSH認証キーをBitbucket/GitHubに設定しよう! [Mac簡単手順] – 酒と泪とRubyとRailsと
管理画面の詳しい使い方はbitbucketの使い方 — Windows+TortoiseHg 2.x で始めるMercurialで確認してください。
参考にしている書籍など
Gitについて基本的なことを勉強するなら以下の書籍もおすすめです。今回の記事にて一部参考にさせていただきました。初心者さんでも理解しやすく基礎が詰まった本です。
以上、駆け足気味でしたが、コマンドやGUIなどの基本的な部分を1日で使えるようになるためのフローでした。