たくさんの「LGTM」ありがとうございます。
ちょっと別視点からバージョン管理システムの記事を書いてみました。
そちらもよろしければごらんくださいませ。
【Git】オレならこう説明する!Git初心者への用語説明
後、個人ブログもはじめましたのでよろしければ(宣伝)
3年ぶりにこの記事の続きをnoteで書きました。
https://note.mu/nahito/n/nded6e4dd7382
はじめに
「勝利にコミットせよ!」「結果にコミットせよ!」
……は?
何を言ってるかさっぱりわかりません.
コミットって何?つーかコミットって日本語で言うと何?言ってみろよ!!!
そんなエンジニア見習いがとうとうGitHubを勉強し始めました.
一緒にターミナルをいじりながら読んでいくと,理解が深まるかもしれません.
GitHubとは?
要は自分の書いたコードを公開するツールです.
企業では,その会社の中だけで公開し,バグやセキュリティ上の問題がないかなどを他の社員に見てもらい,レビューしてもらったりもしています.
用語の説明
まず先に,訳の分からない用語の説明からしておきます.
すべて私なりの解釈なので,間違っていたら,ご指摘をお願い致します.
インデックス
これから登録するファイルが,以前とどう変わったかを登録する一時的な場所です
リポジトリ
貯蔵庫.データなどを保存しておく場所です
リモートリポジトリ
GitHub上の,データを保存している場所を指します
ローカルリポジトリ
GitHubに送信するデータを登録しておく,自身のPC上の場所を指します
コミット
GitHubでは,GitHubにデータを送信する前に一時的にローカル環境にデータを登録し,その後一気にGitHub上に送信します.
そのローカル環境にデータを登録することをコミットといいます.
プッシュ
ローカル環境に登録していた(コミットされた)データをGitHubに送信&公開することを言います.
GitHubの流れ
ここでは,GitHubにデータを送信するまでの大まかな流れと仕組みを説明します.
1)あなたのPCで開発した物を,ローカルリポジトリのインデックスに追加(アッド)します.
2)あなたのPCで開発した物を,ローカルリポジトリに登録(コミット)します
3)全て登録し終えた後,それらをGitHubに送信(プッシュ)します
以上です
実際に使ってみる
とりあえずMacintoshでやってみます.
GitHubのアカウントは適当に作れると思いますので,割愛します.
GitHubにリポジトリを作る(リモートリポジトリ)
ではまず,GitHub上にリポジトリを作ります.
TOPページ右下の,「+New Repository」を押してください・
次に,項目をうめて,「Create Repository」を押します.
これでリポジトリの作成が完了です.
表示されたページのURIを使いますので,とりあえずそのことを覚えておいてください.
ローカル環境にリポジトリを作る(ローカルリポジトリ)
次にローカルリポジトリを作成します.
作る場所はどこでも良いのですが,とりあえずHOMEディレクトリの下にでも作っておきましょうか.
ターミナルで以下のコマンドを叩いていきます
$ mkdir github
$ cd github
$ mkdir gittest
$ cd gittest
$ git init
$ git init
を叩くと,ローカルリポジトリが作成されます.
ファイルをローカルリポジトリに登録(コミット)してみる
では実際にファイルをローカルリポジトリに登録してみましょう.
適当にテキストファイルを作成します.
私はこれを作成したホームディレクトリ/github/gittestフォルダ
に保存しました.
hello git!
次に,データの変更点を追加します.
今回の場合は「新規作成」ということになりますね.
これらはgitのコマンドで全部勝手にやってくれます.
$ git add test.txt
上記のコマンドを叩くと,変更点を勝手にインデックスに追加してくれます.
何もエラーが表示されなければ成功です.
例えば
fatal: Not a git repository (or any of the parent directories): .git
が表示されたら,git init
が失敗している(ローカルリポジトリが作成できてない)ということになります.
インデックスにデータを追加したら,登録(コミット)します.
$ git commit -m "初めてのGitHub!"
このコマンドで,インデックスの内容が全てローカルリポジトリに登録されます.
ワオ簡単!
この時点では,『ローカル』リポジトリなので,GitHub上には反映されておりません.
GitHubにデータを送信する(リモートリポジトリにデータをプッシュする)
では,GitHubにデータを公開してみましょう.
先ほどのURIを使います.
まず,インデックス(ファイルの変更点などのリスト?)をGitHubに作成.
$ git remote add origin https://github.com/あなたのUSER_ID/HelloGit.git
そしてコミットされたデータをGitHubに送信(プッシュ)します.
$ git push origin master
※ GitHubは、最近作ったリポジトリだとmasterではなくmain
の場合があります。
※ mainブランチの場合は$ git push origin main
に適宜読み替えてください!
ここまでエラーなく進めると,GitHubにデータが登録されていると思います.
とりあえずここまでのまとめ
さあ,いろいろコマンドが出てきたのでまとめてみます.(自分用も兼ねて
1)ローカルリポジトリを作成する
$ git init
2)ローカルリポジトリにファイルの変更点を追加(インデックスに追加)
$ git add ファイル名
3)ローカルリポジトリにインデックスに追加したファイルを登録
$ git commit -m "変更点などのコメント"
4)追加したインデックス(ファイルの変更点など)をGitHubに作成
$ git remote add origin リポジトリのURI
5)ローカルリポジトリのファイルをGitHubのリポジトリに送信
$ git push origin master
勝利にコミットせよ!
勝利に,ローカルリポジトリにデータを追加せよ!
うん,やっぱり意味わかりませんね.
プッシュしたデータを変更・更新してみる
せっかくGitHubにデータを公開したのですから,変更してみましょうか.
先ほどのtest.txtを編集してからプッシュしてみましょう.
hello git!
Edit test!
1)変更をインデックスに追加
$ git add test.txt
2)ファイルを登録(コミット)
$ git commit -m "変更してみたよ"
3)データの送信
$ git push origin master
ブランチ(枝)とは?
ブランチを切る……マージする……これまたGitにはよく出てくるワードではないでしょうか?
枝を切って結合する?
ってか,「マージ」ってそもそも動詞だから「マージする」 = 「結合するする」じゃねーの?
用語説明
マージ
「結合する」という意味.
複数に分岐させた物をつなぎます
ブランチ
その名の通り「枝」.
一気にバージョンを上げる時などに,失敗した時用にコピーを作っておくイメージ
実際にブランチを作ってみる
まあ,まずはブランチを作ってみましょうか.
$ git branch testbranch
これで「testbranch」という名前のブランチが作成されます.
上図で言うところの「Ver.2.0β」のイメージですね.
なお,今ある(存在する)ブランチは,
$ git branch
で確認できます.
ブランチを移動する
$ git branch
でブランチを確認すると,
「master」と「testbranch」というブランチがありますね?
今は「master」というブランチに「*」がついています.
これは今プッシュ(GitHubにデータを送信)すると,
masterブランチに全部データが書き込まれますよという意味になります.
いやいや,せっかくコピーを取ったのだからそっちに書き込んでいってもらわないと
困りますよね?
参照&書き換え先のブランチをtestbranchに変えてみます.
$ git checkout testbranch
これで再度$ git branch
をすると,「*」の位置がtestbranchに移っていることが確認できます.
作ったブランチにデータを送信してみる
では,testbranchにデータを送信(プッシュ)してみます.
まずはテキストを書き換えましょうか…
hello git!
Edit test!
branch test!
1)インデックスに変更点を登録
$ git add test.txt
2)ファイルをローカルリポジトリに登録(コミット)
$ git commit -m "ブランチを作ってそのブランチにプッシュ!"
3)GitHubにローカルリポジトリのデータを送信(プッシュ)
$ git push origin testbranch
!注意!
今回は「testbranch」にデータを送信するので,
$ git push origin testbranch
です!
ではGitHub上に送信されているかどうかを確認してみます.
左のブランチのプルダウンから「testbranch」を選んでください.
すると,先ほどプッシュしたものが反映されていると思います.
ブランチを本筋に統合する
所謂「マージ」と言うものをしてみます.
ブランチを本筋に反映させます.
masterブランチに,testbranchを取り込みます.
1)まずは取り込み先のブランチを選択します.
$ git checkout master
2)そして,materにtestbranchを結合します.
$ git merge testbranch
3)最後に,結合情報をGitHubに送ります(プッシュ)
$ git push origin master
今回は「master」ブランチにデータをプッシュするため,コマンドは「master」になっています.
反映されていますね!
このようにしてバージョンデータを管理できるっぽいです.
いやー…便利!!
なのかな?
ここまでのまとめ
今回もコマンドをまとめてみます.
1)新しいブランチを作る
$ git branch ブランチ名
2)今あるブランチを確認する
$ git branch
3)ブランチを移動する
$ git checkout ブランチ名
4)ブランチを結合(マージ)する
※$ git checkout
で,結合したいブランチに移動して…
$ git merge 取り込むブランチ名
で,「ブランチを切る」ってどのことですか…?
一旦ここまで
次はGitHub上のデータをローカルリポジトリにダウンロードする「プル(pull)」というのをやってみます.
続きをnoteで書きました!
よかったらぜひ!!
https://note.mu/nahito/n/nded6e4dd7382