独学プログラマー19章読んでみた:github
19章はバージョン管理のことについて書いてありました。主にGithubの使い方が書いてあってpythonの勉強というよりは、実際にプログラマーになるための章かなと思いました。私はHPを作るという課題の時に教えてもらってGithub軽く使ったことがあったのですが、pullして自分の担当のところのプログラム書いてaddしてcommitしてpushするという流れだけ守ってやってただけなので、そのコマンドが何を意味しているのか全然理解してなかったので、そこが理解できたのがよかったです。あと使ったことないコマンドも紹介してあって、そんなこともできるのか〜と思いました。
Github
まず、バーション管理システムとは、複数のプログラマーによるプロジェクト内でのコード共有を支援してくれるシステムのことで、今よく使われているものがGithubです。よく使うワードとして、リポジトリというものがあり、これはバージョン管理システムによって作られるデータ構造です。コードの変更箇所が記録されます。ローカルリポジトリと中央リポジトリによって成り立ちます。ローカルリポジトリとは、メンバーそれぞれのコンピュータにあり、中央リポジトリはGithubのようなウェブサイトで提供されます。プログラマーはローカルリポジトリで変更箇所(差分)を記録していて、それを中央リポジトリに同期することで全員で共有することができます。
使い方
まずリポジトリをウェブサイトで作成します。そのURLをコピーし
$ git clone [リポジトリURL]
というコマンドを書くことで自分のコンピュータにそのリポジトリがダウンロードされます。
ここでGitを使う上でよく使うものを先に紹介します。
- pull:中央リポジトリに記録された新しい差分をローカルリポジトリに同期させる
- push:ローカルリポジトリの内容を中央リポジトリに同期させる
- add:pushするためにステージ状態にする
- commit:ステージ状態の差分をローカルリポジトリに保存する
ステージ状態とは最終的に中央リポジトリにpushしたい差分がどこなのかをGitに教えるということらしい。なのでpushの大まかな流れは、変更した差分をGitに教え、ローカルリポジトリに保存し、中央リポジトリに同期するって感じなのかな。
ここからは実際に使うコマンドの紹介です。
$ git remote -v
pushやpullする相手となる中央リポジトリのURLを表示する。よくコマンドで使われる-vはverbose(多くの情報を出力する)というものの略らしい。
$ git status
ローカルリポジトリに記録された状態と現場との差異を表示する。ステージ状態に無いものは赤く表示されます。なのでpushする際は赤い文字が無い状態にする必要があります。
こんな感じで表示されます。これはtest10.pyはステージ状態では無いということが一目瞭然ですね。
$ git add [ファイルパス]
ステージ状態にしたいファイルパスをここに書くことでステージ状態にすることができます。ファイルパスのところを.(ドット)に置き換えることで"全ての差分"を自動的にステージ状態にすることができます。
$ git reset [ファイルパス]
ステージ状態にしたあとでステージ状態を取り消したい時はこのコマンドで実行できます。
$ git commit -m [コミットメッセージ]
これでステージ状態の差分をローカルリポジトリに保存できます。コミットメッセージとは以下のファイル名の右に書かれているコメントのことで、これを書くことで複数のメンバーで作業する時にわかりやすくなります。
$ git push origin master
これは呪文です。これでcommitした差分を中央リポジトリに同期することができます。
$ git pull origin master
これで誰かが変更したものでも差分を中央リポジトリからローカルリポジトリに同期することができます。
前のバージョンに戻すこともできます。
$ git log
これで今まで行ってきたリポジトリの履歴を見ることができます。コミットにはコミット番号(ID文字列)というものが全てに付いているので、そのID文字列を見るためにこのコマンドを実行します。
$ git checkout [コミット番号]
先ほど見たID文字列をここに指定することで、その時点のコミットした状態まで戻すことができます。コミット番号のID文字列とは例えば”16c62a261a161b70c844d4027eadd6a936c4cffc”このようなものです。
$ git diff [ファイル名]
これで、前回コミットしたものとの差分、つまりリポジトリに記録されたものと違う部分を表示することができます。
この時一番下の行を書き足しているので+で表示されています。
逆にこの時は一番下の行を削除したのでーで表示されています。
他にも色々なことができるみたいなので、ぜひ使えるようになりたいと思いました。チームでも作業がややこしくならずに進められそう。今までチームでやったことそんなに無いけれど、仕事となったらたくさんあるだろうし、練習しとこうと思いました。
バイバイ!