Git / GitHubの使い方 - 手元での管理
これは筆者の裁量でバンバン中身を削っているものなので、しっかりとgitの基礎を身に着けたい人はGit - Bookを参照してください。
また、このチュートリアルは、CLIを使って操作することを念頭に置き書かれています。
コマンドラインツールが使えなかったり、まだ馴染んでいないと感じる人はSourceTreeなどのソフトウェアを使いましょう。
プログラミング関連の様々なことに共通することですが、新しいツールを利用するときに苦手意識を持たないことが大切です。
Gitってなんぞや?
分散型バージョン管理ツールのことです。
なぜ分散させてバージョン管理したいかというと、たまにプログラムを書いているときに間違って消滅させたり、破壊的な変更を加えてしまうからです。
人間は誰でも大抵ミスをするので、うまく管理していくのが大切です。課題も、成績も...
実際にバージョン管理ツールが役に立つと想定される例:
AliceとBobは電脳たこやきについてのレポートを書いていましたが、Charlieが来て、電脳いかやきという文言をランダムに混入させてしまいました。 Charlieが去ったのち、バージョン管理ツールがあれば、レポートを書く対象である電脳いかやきを削除できますが、バージョン管理ツールがない場合は一つひとつ手作業で探す・プログラムで探索するなどの行為が必要になります。
実際に様々なものが破壊されたり破滅したりするので、適当に置き換えて想像してみてください。例え悪意がなくとも徹夜明けでデータを吹き飛ばしたり、うっかりミスでデータを吹き飛ばしたり、python
を消すことでOSが起動不可になるなどのケースがありえます。いまはわからなくとも、データを吹き飛ばしたり誤ってデータを消すなどの行為を通じて、分散の必要性、バージョン管理の必要性が分かってくると思います。
Gitの使い方 - ローカルリポジトリ
手順
いま、あるディレクトリ直下にいるとしましょう。 ここでgitによるバージョン管理を始めるには、このコマンドを打ちます。
git init
すると、このような出力が返ってくるはずです。
Initialized empty Git repository in (任意の文字列)
しかし、このコマンドを打ったことでgit
がすべてのファイルを管理し始めるわけではありません。
私たちがgit
をこのディレクトリ内で使うと宣言した上で、どのファイルを管理するかを明示的に教えてあげる必要があるのです。
git
に管理してほしいファイルを指示するには、以下のコマンドを使います。
git add (ファイル名)
しかし、このコマンドだけではgit
によって記録される対象とはなりません。git
はその時々のファイルの状態を管理するツールです。
それはつまり、いちいちファイルを足したり引いたり消したり……などの履歴をすべて記録するものではないということです。
実際には、ファイル変更のきりが良さそうなところでgit
にバージョンの記録をお願いすることになります。
バージョン記録のためのコマンドが以下のものです。
git commit -m (コミットログ)
コミットログは、今回記録されるファイルでの変更点などを記すメッセージです。 後の自分や今後他者の目に触れることを意識しつつ、意図がわかりやすいように簡潔に記しましょう。
わざわざgit
がこのような婉曲したアプローチを採るのはなぜでしょうか。
それはブランチの概念に触れたときに明らかになります。
まとめ
いままでの流れをまとめてみましょう。
- 現在のディレクトリで
git
による管理をはじめます。
git init
- いくつかのファイルを
git
の管理対象にしましょう。
git add (some files)
- いまの状態を記録しましょう。必ずメッセージを書く必要があります。
git commit -m (message)
このような感じでバージョンを管理することができます。良かったですね。
ファイルの削除など
では、以下にgit
管理からの削除方法とファイル一覧取得方法を記しておきます。
add
だけしたファイルを管理から外したい場合
git rm (ファイル名)
- 一度でも
commit
したことがあるファイルを管理から外したい場合
git rm --cached (ファイル名)
git
で管理されているファイルの一覧を取得したい場合
git ls-files
これらは概略であり、もっとたくさんのオプションとたくさんの操作が存在します。
詳しくは
man git
で調べてみてください。
man
コマンドはmanualの略で、様々なコマンドの使用例に深く立ち入って学ぶことができます。
git
コマンド以外でもman (command)
で検索してみましょう。
最後に
ここまでの流れの詳細については、Gitの基本を参照してください。
中ほどの図において、それぞれgit add
がステージング、git commit
がコミットに対応します。