メインコンテンツへスキップ
見出し画像

Git&GitHub入門②ブランチなど〜

    前回の振り返り

    前回は自然農法をITで普及させるという目標を実現させるために、だれかと一緒に開発をすることを考え、複数人での開発には必須のバージョン管理ツールである「Git」を学習することにしました。

    テキストは「つくって、壊して、直して学ぶ Git&GitHub 入門」です。


    ブランチの基本

    テキストでは、早速ブランチを作って切り替えてみるということをします。

    • git branch ブランチを表示する

    • git branch <ブランチ名> ブランチを作る

    • git switch <ブランチ名> ブランチに移動する

    • git switch -c <ブランチ名> ブランチを作りながらブランチに移動する

    画像
    新しくtestingというブランチを作って、masterからtestingに切り替えました

    ここで、実際に作ったブランチに新しいファイルをadd、commitして、git logで見てみます。ブランチが2つできて、それぞれに記録が残っています。

    画像
    HEAD -> testingとなっています

    ブランチの削除については、削除の前に元のブランチに戻っておく必要があります。再度スイッチしてブランチを削除します。

    • git switch -d <ブランチ名> ブランチを削除する(未コミットなし)

    • git branch -D <ブランチ名> ブランチを削除する(未コミットあり)

    画像
    コミットしていない編集があるブランチは大文字の-Dで削除します

    一時退避のgit stash

    続いてあるブランチでバージョン管理しながら編集している最中に、別のブランチに移動する(戻る)必要が出た際に、一時的に編集を退避させることを行います。テキストに従って例を作っていきます。

    file.txtを作って、まずmasterブランチでコミットします。

    画像
    中身は"This is file.txt"です

    次に新しいブランチfeatureを作ってその中で編集してコミットします。

    画像
    "Update file.txt on feature branch"という1行を追加します

    そしてさらに編集してコミットせずにおいておきます。これで準備はできました。差分も確認してみましょう。

    画像
    "Update again"というテキストを追加しましたが、コミットしていません

    このテキストのコンセプト通り、エラーを出してみます。このままコミットしていない変更がある段階で、masterブランチに戻ってみます。

    画像
    コミットしてくださいと言われました

    ここでgit stashをして一時退避をします。
    一時退避をした後で、cat file.txtにてファイルの中身を見てみるとコミットしていない編集が消えています。
    その状態でまたmasterブランチに切り替えます。今回はエラーが出ません。

    画像
    ブランチを切り替えられましたが、対比したものはどうなったのか見ていきます

    一時退避した内容を取り出すgit stash pop

    一時退避した変更があるブランチに戻ります。
    そしてgit statusを確認するとコミット対象は存在しないとされています。

    画像
    ないと言っているので、対比したものを取り出してみます

    git stash popで一時退避していた編集"Updata again"を取り出してみます。
    cat file.txtで中身を見てみると"Update again"が復活しています。

    画像
    一時退避を復活できました

    まずはログの整理としてrebaseを

    複数人で作業したことでコンフリクトしてしまったしまった場合にも使えるrebaseですが、テキストでは一旦ログをまとめる用途としてrebaseを使って行きます。

    ファイルを作って、とにかくたくさんコミットを作ります。

    画像
    コミットがふえたので、これをまとめていきます

    git rebase -iでコミットをまとめていきます。今回は、1つ前と今回のコミットをまとめたいので、2つ前のコミットをベースにして行きますので、
    git rebase -i HEAD~2
    というコマンドを入力します。HEAD~xのxを変更して何個前のコミットをベースにするかを変えられます。

    コマンドを入力すると画像のようなエディタが開きます。

    画像
    git rebase -i HEAD~2

    git logで見ていた通り、1つ前と最新のコミットがpick <コミットid>の形で表示されています。ここでコミットを残すという命令のpickを、前回のコミットに統合してコミットするという意味のsquashに変更して保存します。

    画像
    squashに変更します

    保存するにはctrlキーとxを押して、yを入力したあとEnterを押します。

    するとコメントの編集エディタがまた開きますので、コメントを修正します。#でコメントアウトされている部分は無視し、それ以外の行を消して新しいコメントを書きましょう。

    画像
    このままだとFix Fixというコメントになります
    画像
    新しいコメントをかきました

    またctrlキーとxを押して、yを入力したあとEnterを押します。

    画像
    実行後の表示です

    これでコミットがまとめられています。git logで確認しましょう。

    画像
    2つになっています、コメントも変えられました

    次回は第3章を見ていきます

    さて次回からは実際に複数人でプログラム開発をするためにGitHubのセットアップや基本的な扱いを習得していければと思います。お読みいただきありがとうございました。


     
     
    金融機関で7年間データサイエンティストとして勤務していましたが、世界を救うために自然農法を始めたい!と思って動きだしました。学習したこと、やってみたこと、考えたこと、その他のこと、世界を救うというゴールに向かって地道に進んでいく過程を残させてもらっています。

    あなたへのおすすめ