よしかわーるど

プログラミングで世界を変える

Gitを使ってみる その3

この記事は、名古屋のIT系学生コミュニティ「OthloTech」のアドベントカレンダー

OthloTech Advent Calendar 2018 9日目の記事です。


どうも、よしかわです。

今回は、基本的なSourceTreeの使い方について触れます。

前回の記事

Gitを使ってみる その1

Gitを使ってみる その2

対象読者

  • Git、GitHub の使い方を学びたい人
  • Source Treeを使っている人
  • Terminal を使っている人

目次

このブログでは以下のことを行います。

リポジトリの作成

新規リポジトリの作成をします。

Start a project」をクリックして次に進みます。
「Repository name」にリポジトリ名を入力してください。
git-practiceでも何でもいいです。
「Description」にはリポジトリの説明を短く書きます。 GitHubの勉強用でも何でもいいです。

「Public」が選択されていて、「Initialize this repository with a README」のチェックが外れていることを確認したら「None」のまま「Create repository」をクリックしましょう。

リポジトリをクローンする

先程作ったリポジトリはGitHubにあります。なので、自分のマシン内には入っていません。なので、リポジトリをクローン(ダウンロード)します。

clone

ここで、「これはGitリポジトリです」と表示されます。これがリポジトリの証です。

コミット

開発が始まると、新しいファイルを作成したり、既存のファイルの内容を書き換えたり、不要なファイルを削除したり…など様々な編集作業が行われていきます。そうした変更にメッセージをつけてリポジトリに登録する操作を コミット と言います。

リポジトリ内では、コミットを行うことで、変更の履歴が時系列に繋がった形で記録されていきます。

コミットは「ステージに追加->コミット」の2段階で行う

まず、コミットはステージに追加->コミットという2段階で行います。

src/html/index.htmlを指定箇所を変えてみましょう。
変更作業を行ったファイルを、ステージ(ステージングエリア、ステージ領域)に移動する工程が必要です。 左のファイルステータスから変更するファイルを選択して、ステージに追加します。

add

次にindexにステージしたファイルの左のチェックボックスをクリックします。

stage

コメントは、 他の人が何をやったかがすぐに分かる コメントをしましょう。

commit

コミットは1つの作業ごとに行うと、このタイミングでこの昨日を実装したとかがすぐにわかります。後々見返す時に便利です!

ちなみに、ファイルの新規追加や削除も出来ます。Sourcetreeでは、ファイルの変更は黄色、ファイルの追加は緑、ファイルの削除は赤色で表示されます。

ローカルリポジトリの変更をリモートリポジトリに反映させる

自分のPCにあるローカルリポジトリ上で、ファイルの追加・削除、ファイルの内容の変更などをSourcetreeを利用して、コミット履歴に残してきました。 これまでの変更を、リモートリポジトリに反映させます。

プッシュ

ローカルリポジトリからリモートリポジトリへ、変更履歴をアップロードするときには、 プッシュ を利用します。現在のローカルリポジトリの状態がリモートリポジトリよりも進んでいる場合、pushを行うとローカルリポジトリにおいてコミットした内容がリモートリポジトリに反映されます。

プル

リモートリポジトリから、ローカルリポジトリへの変更履歴を取得する時には、 プル を利用します。現在のローカルリポジトリの状態よりもリモートリポジトリのコミットが進んでいた場合は、それらがローカルリポジトリに反映されます。ファイルのダウンロードに近い感じです。

ブランチ

Gitを利用する大きなメリットの一つとして、 ブランチ です。ブランチは「枝」という意味で、作業内容を枝分かれさせて、複数の作業を並行して進めることが出来ます。過去の作業に戻ったり、最新の作業状態に戻したり、自由自在に出来ます。

プルリクエスト

ある程度作業が終わったら、ブランチを統合したいときが来るはずです。チーム開発をした際に、勝手にリリースブランチにプッシュされて、エラーが発生したら、ヤバイですよね…。そのためにも、プルをリクエストしてレビューし終わったらマージする環境を作りましょう。

コードレビューする文化を根付かせることで、マージしたときにバグが発生しづらい環境を作り出すことができます。

マージ

フェッチはリモートリポジトリに関する情報を更新するだけで、ローカルの状態をそれに合わせる訳ではありません。ローカルの状態を、取得した最新のリモートリポジトリの状態に合わせるにはマージという操作が必要になります。実は プル は、このフェッチとマージをあわせた操作になっています。

フェッチ

ローカルのリポジトリでは、リモートリポジトリの最後に取得したときの情報を保持します。ローカルでの作業と、リモートリポジトリの状態の差異は、この情報で計られます。しかし、実際のリモートリポジトリのほうでは他の人作業が反映されて、状態が変更されているかもしれません。そこでリモートリポジトリの最新の状態を取得する作業が必要となります。これが フェッチ です。

ファイルをGitの管理から外す

管理しないファイルを指定する.gitignoreというファイルを作成します。

.gitignoreの書き方

.gitignoreの書き方をマスターすると、ディレクトリごと管除外したり、拡張子を指定して同一拡張子のファイルをすべて除外するなど、様々な方法で指定できます。

書式 説明
# #から始まる行は、コメントとして扱われる。
! !から始まる行は、その行で指定したものを除外しない。
test.txt 指定したファイルを除外する。
/test.txt 先頭の「/」はルートディレクトリ(.gitがあるディレクトリ)を表す。つまり、ルートディレクトリ直下のtest.txtを除外する。
testdir/ 名前が/で終わる場合、該当する名前のディレクトリのみを表す。
*.html 「*」+ 拡張子で、該当する拡張子のファイルすべてを除外する。

おわりに

今回は基本的なコマンドについて話しました。チーム開発をする際は他にも色々なことをしますので、その4で話したいと思います。

OthloTech Advent Calendar 2018 10日目の記事を書くのは、Juju_62qです!

AWS-SDKについて書いてくれるそうなので、楽しみです!ではでは