Git入門 ~チェックアウト・ブランチ編~
前回の続きです。
<<チェックアウト編>>
チェックアウトとは、現在作業しているカレントディレクトリから、過去にコミットした時点へ遡る操作のことです。まさにタイムスリップみたいな感じです。
では実際にやってみましょう。
<チェックアウト>
① 適当にファイルを作ってコミットしてみる。(前回の復習も兼ねる)
② git log --oneline
③ git checkout <SHA1 ID>
タイムスリップを体感できるように、このディレクトリに変更を加えましょう。前回の手順を用いて適当にファイルを作りコミットします。(①)
さて、タイムスリップする地点を決めましょう。今までコミットした記録を表示します。(②)git logのみでもログを表示できますが、checkoutするのにはSHA1 IDのうち最初の数文字のみで問題ないので、省略した形で表示するために--onelineスイッチを使いました。
いよいよチェックアウトをします。git log --onelineで検索したときに、コミットコメントの左横にアルファベットまたは数字の羅列があると思います。これがSHA1 IDの頭です。これを、用いてコマンドを実行します。(③)
[チェックアウト]
lsでファイル一覧を表示しても、さっき作ったnew_file.shが見当たりません。なぜかというと、beadfffの時点(Commit sampleのコミットメッセージをした時点)に逆戻りしてしまったからです。
newf_file.shが消えてしまった!と思うかもしれませんが安心してください。
過去に遡れるのであれば当然未来にも戻れます。
git checkout masterを実行すると、元の時点に戻れます。
チェックアウトした直後にエラーみたいな表示がありますが、これは、「masterにチェックアウトしなおしたら(masterに戻ったら)これからコミットしても消されちゃうよー」っていう注意喚起みたいなものです。ここから、再び新規ファイルを作成してコミットし、masterをチェックアウトしたら新規ファイルはどこかへ行ってしまうと思います。そうです、注意喚起の通り消えてしまったのです。
これを防ぐにはブランチというものを作る必要があります。
<<ブランチ編>>
ブランチは日本語で「枝」という意味です。
masterを幹だとしましょう。イメージとしては幹から枝分かれする感じです。
極端に言うと、masterのコピーを生成する感覚です。
コピーを生成すれば、コピーした先のディレクトリで新規ファイルを複数つくり、コミットして、「またmasterに戻ろう!」と考えたとしても、masterとコピーはいわゆる別物なので、コミットが消えることはありません。
早速ブランチを作りましょう。
<ブランチ>
① git branch "new_branch'
② git checkout new_branch
③ git branch
まず、ブランチを作ります。(①)名前は正直なんでもいいです笑。
次に、ブランチをチェックアウトします。(②)これで新しく作ったブランチに移動できました。
試しに、ちゃんとブランチが作られているか確認しましょう。(③)
2つありましたね。*がついているのが現在のブランチです。
このブランチとチェックアウトをうまく利用することで、バージョン管理を行ったり、
プロジェクトを修正するときに一度ブランチを作って、そこでうまく修正してからブランチをもとのブランチ(今回でいうmaster)にマージ(結合)します。
(マージに関しては後々やります)
[ブランチ]
僕が思うに、個人開発レベルであればこのくらい覚えておけば何とかなるのではないかと思います。
しかし、個人で開発するには限界がありますし、ゆくゆくは会社に勤めてチームで開発することになるでしょう。
そうなると、ローカルだけでなくリモートリポジトリの操作(GitHubやGitLabなど)も必要になってくると思います。
じゃあ、リモートリポジトリについてもついでに書いちゃおう!
...と思ったのですが、すみません、リモートに関しては勉強中です笑。
来週のインターンまでにリモートを完璧にできるといいなぁ。
☆今回のおまけ
・git tag <タグ名>
これは便利です。いちいちSHA1 IDを入力するのは面倒ですよね。そんなときに活躍するのがtagです。これを用いると、各コミットにタグをつけることができます。ブランチと同様、git tagのみを実行するとタグの一覧が出力されます。
・git rev-parse <ブランチ名/タグ名>
ブランチ名またはタグ名を指定して、指定したSHA1 IDを出力するコマンドです。
まだまだあるけど、Gitのヘルプページや、ほかにうまい具合にまとめている人もいると思うのでそっち見たほうがいいかもしれません笑。
俺もほかの人のページ見て勉強しよっと。