どぼじょのIT学習ブログ

高専卒土木女子がIT業界を目指してお勉強。

Git-it

今回はGithubのお勉強ということで、Git-itをやってみます!

目次

1.Git-itインストール

Git-itのアプリは以下のページからダウンロードできます。Macの方はGit-it-darwin-x64です😊

github.com

インストールしたアプリを開くと、スタート画面が出てきます。
11ステップに分けて学べるみたいですね👀 言語は日本語に設定できます✨
f:id:mistyrinth:20190116160103p:plain

2.Git-it開始

GET STARTED!から開始します。
ちなみに私は既にGitのインストールとGithubのアカウント作成は済んでいるので、終わっているところは飛ばしながらやっていきます。

2-1. Gitをインストールして設定をする

既に終わっているので飛ばします〜!
参考記事:Git入門 part1 / Gitの基本

2-2. ローカルのrepositoryを作成

ローカルリポジトリを作成します。
hello-worldという名前のディレクトリを作成し、プロジェクトを初期化して新しいGitインスタンスを作成します。
このあたりも既に学習済みなのでさくさく進めていきます💪
f:id:mistyrinth:20190116161507p:plain

2-3. ステータスを確認して、コンテンツを追加してcommitをする

作成したリポジトリの中にテキストファイルを作成します。
readme.txtというファイルを作成し、Helloとだけ書きます✋

f:id:mistyrinth:20190116162624p:plain

statusコマンドでファイルに変更が加わっていることを確認したら、addコマンドでコミットをライブラリに追加し、commitコマンドでコミットします💡
f:id:mistyrinth:20190116163201p:plain

更に、readme.txtに2行目(World!)を追加します。
diffコマンドで最後にコミットした内容と現在の内容を照らし合わせ、差分を確認できます👀
差分を確認したら、先程と同様にコミットします✨
f:id:mistyrinth:20190116164825p:plain

2-4. GitHubのアカウントを作成

Githubのアカウントは持っているのですが、以下のコマンドでGitにGithubのユーザー名を登録できるようなので、やってみます!

$ git config --global user.username ユーザー名

f:id:mistyrinth:20190116165516p:plain

登録できました!

2-5. ローカルのrepositoryをGitHub.comのrepositoryに接続

Githubにログインして、新規リポジトリを作成します。
このとき、ローカルリポジトリhello-worldと同じ名前を指定します💪💪
f:id:mistyrinth:20190116165858p:plain

ローカルリポジトリ側の操作で、リモートリポジトリ(Github)に Push します。
リモートリポジトリにoriginという名前をつけ、masterブランチに Push です😇
f:id:mistyrinth:20190116172258p:plain
参考記事:Git入門 part2 / リポジトリの共有, 変更履歴の統合

2-6. オープンソースのrepositoryをforkしてcloneする

今度はリポジトリのフォーク(fork)をやってみます!
フォークとは、対象のリポジトリのコピーをリモートリポジトリ(Github)のひとつとして使うようにすることです。
この時点ではGithub上でリポジトリの複製をしているだけで、ローカルリポジトリには対象のリポジトリはありません🙁

ここでは、以下のリポジトリをフォークします!

github.com

f:id:mistyrinth:20190116215549p:plain

右上のForkボタンを押します👆
読み込みのアニメーションが現れたあと、フォーク完了です🎉
f:id:mistyrinth:20190116215722p:plain

次に、フォークしたリポジトリをローカルリポジトリにクローンします。
このとき、ローカルリポジトリhello-worldディレクトリ)にいる場合は外に出ます👣
以下のコマンドでリポジトリをクローンすることができます。

$ git clone GithubのURL

また、元々のリポジトリ(フォーク元)に変更が加わった場合に簡単に Pull できるように、元々のリポジトリに名前をつけておきます。
名前はなんでも良いのですが、upstreamという名前をつけることが多いみたいです🙂
f:id:mistyrinth:20190116221146p:plain

2-7. 新機能・修正のためにbranchを作成

ブランチについては学習済みのため、割愛します〜!
参考記事:Git入門 part3 / ブランチ

GitHubの機能として、gh-pagesという名前のブランチにあるファイルを、自動的に静的なWebサイトとしてホストしてくれるそうです。
今回フォークしたプロジェクトはWebサイトを作るためのものなので、メインブランチの名前はmasterではなくgh-pagesです😶
また、このようなサイトのURLは以下のようになっています。

http://githubusername.github.io/repositoryname

早速ブランチを作成しますが、その前に今どこのブランチにいるのかをstatusコマンドで確認しておきます。
f:id:mistyrinth:20190116222621p:plain
gh-pagesという名前のブランチにいることが分かりましたね!!Webサイトを作るためのメインブランチです。

新しくadd-mistyrinthという名前のブランチを作成し、チェックアウトします。
f:id:mistyrinth:20190116223022p:plain

クローンしたpatchwork内にある既存のcontributorsという名前のディレクトリ内に、新しくadd-mistyrinth.txtというファイルを作成します。
中身はmistyrinthというユーザー名のみ記入しました🙃
このテキストファイルをaddcommitコマンドによりコミットします。
最後にこの変更をGitHub上の自分のリポジトリにPushします!
一連の流れは以下のとおりです☀️
f:id:mistyrinth:20190116224509p:plain

2-8. Collaboratorを追加して作業を同期する

GitHub上で、他の人のリポジトリにアクセスして編集する権限を持つ人をコラボレーター(Collaborators)と言います。
コラボレーターはSettingタブから簡単に追加できます😊
追加したら相手に通知がいき、承認されればコラボレーターになっていただけます!
f:id:mistyrinth:20190117142906p:plain

2-9. 修正をGitHub.comと同期するためにpushとpullを行う

同じプロジェクトで他の人もファイルに修正を加えている場合などに、ファイルを pull することで、最新の状態を取り込むことができます⛱

参考記事:Git入門 part2 / リポジトリの共有, 変更履歴の統合

f:id:mistyrinth:20190117152904p:plain
何も変更がされていなければ、Already up to date.と表示されます✨

2-10. Pull requestを作成

フォークしたリポジトリに変更や修正を加えたら、変更元のリポジトリの所有者に対して、自分が行った変更や修正を元のリポジトリにも反映してもらえるよう、プルリクエストを送ることができます。
参考記事:Git入門 part5 / Pull Request

元のリポジトリにプルリクエストを送ります!
f:id:mistyrinth:20190117155539p:plain

変更箇所は以下のとおりでしたね〜🙃
f:id:mistyrinth:20190117155601p:plain

相手がチェックして問題が無ければプルリクエストがマージされます💡
f:id:mistyrinth:20190117160050p:plain

2-11. Branchをmergeしてdelete(削除)する

プルリクエストがマージされたら、作業用のブランチは不要になりますね。
整理のため、変更を自分のフォークバージョンにもアップデートします。
まず、自分のローカルリポジトリのメインブランチgh-pagesにマージします🙌
その後不要になったブランチadd-mistyrinthは削除し、リモートリポジトリに push します😊
f:id:mistyrinth:20190117161130p:plain

これにより、Github上のadd-mistyrinthブランチも削除され、ブランチはメインブランチの1本だけになります🎉

また、フォーク元のリポジトリupstream)の変更を Pull すると、最新にアップデートされてます。

f:id:mistyrinth:20190117161834p:plain
他のユーザーさんたちもGit-itやってますね笑

Git-itは以上です〜!🧚‍♀️