101010

とあるアプリ開発者のブログです。KotlinやSwiftが好き。たまにポえむってます。

Git をゼロから勉強してみる

GitHubを全然使いこなせてなかったので、ゼロから勉強してみることにした。 まずは全体像を掴むためにも、簡単な教科書がほしい。 そこでAmazonで評判の良い、こちらの本を購入することにした。 マンガ形式なのでやさしく理解することができた。

さて、せっかく覚えたGitの内容を、忘れないうちにメモしておく。

アドしてコミットする

f:id:araemonz:20190206214431p:plain

実際にファイルを編集したりしているものは、ワーキングディレクトリに存在するものだ。ローカルリポジトリへは反映されていない。また、ローカルリポジトリへ反映するためにも一旦ステージという場所へ追加してやらなければならない。ステージ上のものをコミットすることで初めて、ローカルリポジトリへ保存することができる仕組みとなっている。

また、コミットメッセージは第三者が分かるためにも、次のように書くこと良いようだ。

コミットの変更内容の要約
(空行)
変更した理由

フォークしてクローンする

f:id:araemonz:20190206214437p:plain

オープンソースやプロジェクトを自分の開発環境に置く場合は、本家から自分のリモートリポジトリへ保存する。これをフォークと呼ぶ。そしてリモートレポジトリからローカルレポジトリへ反映する。これをクローンと呼ぶ。

ブランチしてマージする

f:id:araemonz:20190206214442p:plain

バグ修正や新機能といった作業をする場合は、masterブランチとは別に新規ブランチを作成して作業を進める。コードに問題がなければ、masterブランチに合流、つまりマージするのだ。masterブランチは最新リリース(本番用)を保つようにしておく。

プッシュプル

f:id:araemonz:20190206214447p:plain

ローカルリポジトリの状態をリモートリポジトリへ反映したい場合はプッシュしよう。リモートリポジトリの内容が変更された場合などに、ローカルリポジトリへ反映したい場合はプルしよう。

CUIでのGit操作

次に、CUIでのかんたんな操作にも触れてみたい。

ローカルリポジトリの作成

管理するプロジェクトのディレクトリへ移動し、$ git init でリポジトリを作成する。.git/が生成された。

状態を確認

例えば、この文章のマークダウンtry_git_with_cui.mdをディレクトリ内に保存する。

ワーキングツリーの状態を確認する。

$ git status           [master]
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    try_git_with_cui.md

nothing added to commit but untracked files present (use "git add" to track)

Untracked files、つまりtry_git_with_cui.mdファイルは追跡されていないというメッセージだ。

追跡対象にする

ファイルを追跡をしてもらうためにステージエリアへ登録する。

$ git add .            [master]

.ドットで、すべてのファイルを追跡対象に指定している。

コミットする

追跡登録したらコミットしよう。

$ git commit -m "マークダウンファイルを新規に追加した"
過去のコミットにチェックアウトしたい

$ git log で戻りたい地点のcommit ハッシュをコピーして、次のように入力実行する。

$ git checkout d1c54df01ba043ef08d3f3fec4885e43088c8912
Note: checking out 'd1c54df01ba043ef08d3f3fec4885e43088c8912'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at d1c54df mdファイルを新規追加
最新の状態に戻りたい

慌てずに、最新の状態にも戻れることを知っておこう。

$ git checkout master           [d1c54df...]

その他

GUIでのGitの管理は、この本の中でも紹介されているSouceTreeというアプリケーションが良さそうだ。 ブランチの切り替えが簡単だったり、ダブルクリックで簡単に過去のコミットにチェックアウトできるのは便利だ。

Sourcetree - 無料の Git & Mercurial クライアント | アトラシアン

Gitの機能に関してはまだまだたくさんある。その他にも、ここではまとめきれなかった、リバート、チェリーピク、Stash、.gitgnoreなどなど。 実践しながら少しずつ覚えていきたいと思う。

参考