"BOKU"のITな日常

BOKUが勉強したり、考えたことを頭の整理を兼ねてまとめてます。

ソースコードのバージョン管理をGitHub&Git for windowsで行う最低限のコマンドまとめ

f:id:arakan_no_boku:20190811144704p:plain 

目次

はじめに

仕事で開発するとき、ソースコードのバージョン管理は必須です。

個人でやる場合は仕事ほど恩恵はないかもしれませんが慣れておいて損はありません。

今回は、リモートリポジトリは、GitHub、クライアント側は「Git for windows」でやる前提で、最低限のバージョン管理で使うGITコマンドをまとめます 。

Gitインストールと環境設定

インストールと環境設定は、以下の記事を参考に行ってください。

arakan-pgm-ai.hatenablog.com

かつ。

GitHubへの登録済で、GitHubリポジトリを作成してある想定で始めます。

github.co.jp

help.github.com  

なお、以後の説明はGitBashを使ってコマンドラインから操作する方法です。

VSCode上でGit機能を使う時についてはこちらにありますが、GitHubとのやりとりはコマンドラインから行うほうが確実です。

arakan-pgm-ai.hatenablog.com

GitBashでローカルPCにクローン

最初は、GitHubからcloneします。

まず、ローカルPCにワーク用のフォルダを作ります。

そこをカレントにして、右クリックメニューからGitBashを起動します。

f:id:arakan_no_boku:20200411230616p:plain

GitBashで以下のコマンドを入力します。

URLの部分はGitHubリポジトリページの「clone or download」で表示されたURLをコピー&ペーストします。

f:id:arakan_no_boku:20190811160024p:plain

説明の都合上。

リポジトリ名は「bokurepo」にします。

git clone https://github.com/xxxxx/bokurepo.git

f:id:arakan_no_boku:20190811171037p:plain

クローンできると、カレントフォルダ上に「bokurepo」というリポジトリ名のフォルダができます。

そのbokurepoフォルダをカレントにします。

cd bokurepo

初期設定:メールアドレス等

GitHubで登録したemailアドレスと、ユーザ名を「--global」で設定をしておく必要があります。

git config --global user.email "you@example.com"

git config --global user.name "Your Name"

これをしておかないと、git commitした時に「 Please tell me who you are、」と怒られます。

初期設定:エディタ

コミットメッセージ入力忘れで、エディタが立ち上がってくることがあります。

デフォルトはVIMです。

嫌な場合は変更しときます。

以下は、自分の設定(さくらエディタ)例です。  

git config --global core.editor "'C:/Program Files (x86)/sakura/sakura.exe' -CODE=4"

初期設定:Git の管理に含めないファイルを指定

.gitignoreというファイルを作っておきます。

エディタの設定ファイルとか、バージョン管理対象にしたくないものを指定します。

GitHubリポジトリを作成するときに、Pythonを選んで自動生成させるのが楽です。

あとは適宜、それに追記します。

自分の場合は、テスト用データや出力結果などのサイズの大きいものをバージョン管理に含めたくないので「inputs」とか「outputs」のようなフォルダを作って、それらをフォルダ毎対象外に登録したりしてます。

書き方は、こちらがわかりやすいので、リンクだけはります。

qiita.com

作業結果をAddしてCommit

新規追加したフォルダやファイルは、そのままではGitは認識しません。

ファイルやディレクトリの追加を、Gitに認識させるのは、addです。

まず、1ファイル(仮に「logsample.py」という名前にしてます)をaddする方法。

git add logsample.py

ただ、面倒なので、たいていはまとめて、みんなaddするこちらの方法を使います。

git add -A

ファイルの削除は。

git rm [削除したいファイル]

フォルダの削除は。

git rm -r [削除したいディレクトリ]

ファイルの名称変更(リネーム)は。

git mv [変更前ファイル名] [変更後ファイル名]

というようにします。

 変更の場合は、ファイルを上書きするだけで、Gitは認識します。

その状態を確認するのは「git status」です。

addされていないフォルダやファイルが残っている状態。 

f:id:arakan_no_boku:20190815153637p:plain

こちらがAddされてコミット可能になっている状態です。

f:id:arakan_no_boku:20190815153834p:plain

git statusではこんな感じに表示されます。

f:id:arakan_no_boku:20190822221144p:plain

これで「to be committed」のなっていれば、あとは「commit」です。

git commit -m "first commit from feature-boku20190815"

 -mの後ろはコミットメッセージです。

今回のサンプルを実行するとこんな感じです。。

f:id:arakan_no_boku:20190815160241p:plain

あとは、何か追加・変更・削除等がある都度、同じことを繰り返します。

Git for windowsからGitHubにpush

Commitしただけでは、GitHubリポジトリには反映していません。

Commitしたものを、GitHubの「origin/master」に反映させます。

pushします。 

git push origin master

Git for windowsからGitHubにtagをつけてpush

あとで管理しやすいよう、節目節目のバージョンでTagをつけておく手もあります。

その場合の手順です。

仮に「0.1.0」というTagにします。

git tag -a 0.1.0 -m "release version 0.1.0"

git push origin master

git push origin 0.1.0

git tag も、-mでメッセージを与えていないと、エディタが立ち上がってきます。

WEBで確認すると、masterが更新できてます。

f:id:arakan_no_boku:20190815175357p:plain

Tagをpushすると、GitHubの「release」タグで一覧できます。

f:id:arakan_no_boku:20190815185650p:plain


上記のタグ名(例だと0.1.0)をクリックすると、そのバージョンのソースがダウンロードできます。 

GitHub側での修正をローカルに反映

WebのGitHub側を先に更新してしまった時に、pullで変更を取り込みます。

git pull

git pullはリモートリポジトリの変更点をローカルリポジトリに取り込む機能です。

一人だと、知らぬ間にリモート側が更新されているということはないですが、複数人で共有している場合は、毎日、朝いちばんに「git pull」するのが普通です。 

Git for windowsでコミット履歴をみる

コミットした履歴は

git log

でみることができます。

オプションが色々あります。

こちらに見やすいまとめがあったので、リンクを貼ります。

qiita.com

あと。

git tag

f:id:arakan_no_boku:20190815185952p:plain

これでタグ名を調べて、それを指定してピンポイントで探す方法もあります。

git show 0.1.0

これでtag0.1.0をつけたログだけが確認できます。  

こんなもんですね。

とりあえず、一人でやってる分にはこれで困りません。

ではでは。

おまけ

ブランチを切って「A successful Git branching model」に沿った運用をする場合の子マント一覧はこちらです。

arakan-pgm-ai.hatenablog.com