まさ@ブログ書き込み中

まさ@ブログ書き込み中

まさの旅、英語、プログラミング、プライベートについて、色々記録しています。

Git講座が楽しかったから学んだことを熱く語る記事(その1)

 

こんにちは。

昨日のGit講座で頭の中がgit initされたまさです。

 

夜9時半から翌日の朝1時まで我らがコーチさぼさんが僕たち(ISUCON本戦出場を目指す学生3名)に詳しく教えてくださいました。

 

Gitはすごかった。真っ黒な画面(コンソール)だけで僕らが夢中になっていたのがその証拠です。

 

というわけで昨日学んだことをまとめていきます。

 

Gitとは

まずは参考にしたサイトの説明を引用。

Git(ギット)とは、バージョン管理を行うためのツールのことです。複数人でプログラミングを行う場合、ソースコードを効率的に管理・運用する必要があります。例えば、「誰がどのファイルのどの部分を修正したのか?」や「リリース予定の機能追加で更新するのは、どれとどれか?」といったことです。Gitはこのような管理を行うためにつくられたツールで、システム開発の現場では一般的に使われているツールの一つです。

 

僕らが今回学んだのは「誰がどのファイルのどの部分を修正したのか?」という機能の部分でした。

 

 

GitHubとは

僕のようなGitを使っていなかった初心者が混乱してしまうのはGitとGitHubの違いですね。

 

GitHubはこのように説明されています。

 

Gitでは、リモートリポジトリとローカルリポジトリを使い分けて開発を行います。GitHub(ギットハブ)とは、このリモートにあたる部分を提供しているサービスのことです。複数人での開発をサポートしてくれる便利機能が備わっていて、現在ではエンジニアにとって欠かせないツールの一つになりました。料金については、容量に応じて利用料が決まる仕組みになっています。プライベート(非公開)リポジトリを利用したい場合は、有料プランに登録する必要があります。

 

今回の講座ではしっかりこのGitHubについても学びました。

 

 

基本的なgitコマンドと用語の説明

Gitコマンドは他のサイトで死ぬほど書かれているので、コマンド(太文字)とその説

明を簡潔に書いていきます。また、下線部の用語は下の図を見たらわかりやすくなると思います。

 

  • gitを利用したいディレクトリでgit initするとgitリポジトリの配下になる(gitディレクトリが作成される)
  • git statusでそのディレクトリ内のファイルがどのような状態にあるか(具体的にはtrackedかuntrackedか、deletedかmodifiedなのか等)がわかる
  • git addするとuntrackedのファイルや変更したファイルをgitに取り込む(変更を反映する準備ができる=ステージング
  • git commitでローカルリポジトリ(git directory)に記録する
  • git pushでリモートリポジトリ(ここではGitHub)に記録する
  • git checkoutで前回のコミットの状態に戻る
  • git resetでステージしたファイルの取り消しができる 
  • git rmでファイルを削除し管理対象から外す(untrackedにする)
  • git rm --cachedでコミットしたファイルをuntrackedに戻す(ファイルは残っている)

 

それらをわかりやすくまとめられた図がこちら。参照元オープンソースサイトである

Git - Referenceから拝借。

 

stage, commit, checkoutはそれぞれコマンドですね。

f:id:masaincebu:20170517131450p:plain

 

図のタイトル通り、gitのローカルリポジトリ内でどのようにファイルの状態が変わっていくのかがわかりやすくまとめられています。

f:id:masaincebu:20170517131044p:plain

 

git rmコマンドとgit rm --cachedの違いについては以下のスクショ参照。

 

このように、 .gitリポジトリがある中a.txt、b.txt、 z.txtがあります(それ以外のファイルは気にしないでください)。

f:id:masaincebu:20170517132949p:plain

 

このように変更を加えると、

f:id:masaincebu:20170517133220p:plain

 

git statusするとこのようにmodifiedとしてa.txtが現れます。

f:id:masaincebu:20170517134051p:plain

 

addしてステージに乗せ、コミットしました。

f:id:masaincebu:20170517134153p:plain

 

そこで、git rm --cachedを打つと

f:id:masaincebu:20170517134833p:plain

 

このようにコミットしたファイルは削除されたことになり、Untrackedファイルに戻りました。ディレクトリ内にはa.txtは健在ですね。

 

しかし、ここで--cachedではなくgit rmを打ってしまうと 

f:id:masaincebu:20170517135126p:plain

 

このように、コミットしたファイルも、本来のファイルも削除されてしまうのでした。

 

最後に

今回は昨日のGit講座の内容をまとめながら、僕の記憶が曖昧だったところをググりながらまとめさせていただきました。2時間くらい結局かかったけど有意義な時間だったからいいや笑

 

今回の話にはGitHubに対するコマンドが全く出てきていませんが、もちろんGit講座にはしっかりその話も出てきていました。その話についてはあとで「その2」として書こうと思っています。

 

ああ、Gitって興味深い!

 

 

参考にした記事

GitとGitHubの概要

非エンジニアも知っておくべき!ーGitとGithubの違いとは | Tech2GO

git reset

git add の取り消し方法、徹底まとめ! | WWW開発ブログ | WWWクリエイターズ

Git 公式サイト

Git

git rm と git rm --cached

【Git】git rm --cached [ファイル名]:ファイルを管理対象から除外する - Qiita