そもそもなんでGitを使うの?
一言でいえばコードを複数の人に共有して作業するため
ある日の話
ある日Pythonで個人開発をしていた友人Aが
コードのどこが間違っているか分からないと言いました。
友人Bと私は解決するためにソースを見てデバックを試みました。
その際にソースを共有する方法として gigafile便を使いました。
(その後友人Bは寝てしまい、友人Aは筋トレに行きました)
問題を特定し修正した箇所を伝えました。
当然私が持っているソースのみ編集完了しており、友人Aは古い修正されていないソースしか
もってないので私が修正した箇所を自力で修正する必要があります。
ある日の話でめんどくさかった事
- ソースをgigafile便で共有した(upload,downloadが手間)
- 編集した内容をLINEでしか共有出来なかった
- ↑のため実際にどこを編集したのか友人Aに共有出来なかった
Gitを使えばこれらのめんどくさい事を簡単に処理することが出来る
Gitを使う準備
Githubアカウントの作成
https://github.co.jp/ で作りましょう
PCにGitのインストール
使ってるOSによってインストール方法が変わる
ここにやり方が書いてます
リモートリポジトリを作る
リモートリポジトリは一言でいうとみんなで作業する場所
です。
GitHubにアクセスし、リモートリポジトリを作成します。
トップ画面で「Create Repository」ボタンをクリックしてください。
リポジトリ作成画面に移動します。
今回はリモートリポジトリに色々作ってるていでGitを使っていきます。
実際にGitを使ってみる
【git clone】 リモートリポジトリをローカルに持ってくる
git clone
コマンドを使う事でリモートリポジトリを持ってくることが出来ます。
ちなみにローカルに持ってきたリポジトリは作業が終わったら消しちゃってOKです。
git clone "持ってきたいリモートリポジトリのURL"
Gitを使わない場合、gigafile便などで共有しめんどくさかったですが
Gitを使う場合、↑のコマンドだけで持ってくることが出来る
以降は持ってきたリポジトリに cd
コマンドを使って入り作業します
cd "持ってきたリポジトリ"
【git checkout】迷惑をかけないようにブランチを切る
最重要項目です。ここが理解出来ずやらかす人やGitに苦手意識を持つ人が多いです。
特に何もしてない場合以下の画像の様にリポジトリのURLに行くとmaster
というブランチのみ存在すると思います。
このmasterというブランチはデフォルトであり、今まさに見てるリポジトリ本体です。
つまりこのmasterブランチで誤って必要なコードを消したり変なコードを書いて反映してしまうと
コードを置いてるだけのリポジトリであれば間違ってもcommit(後述)から復旧する事が出来ますが
CI/CDを組んでてGitの内容を自動でデプロイする環境であれば大事故に繋がります。
長々と話しましたが
ほとんどの案件では master ブランチに影響を与えないためブランチを切って作業する。
という事は覚えておいたらいつか役に立ちます。
欲を言えば常にブランチを切る癖をつけとくと大事故を避けれます。
実際にブランチを切るに以下の様にgit checkout
コマンドを使います。
#ブランチ新規作成し、そのブランチに切り替える
git checkout -b "ブランチ名"
#元々あるブランチに切り替える
git checkout "ブランチ名"
ローカルでブランチを確認するコマンドはgit branch
コマンドです。
#適用されているブランチを表示
git branch
#全てのブランチを表示
git branch -a
【git add】 編集したコードをcommit出来る状態にする
楽にコードを持ってくる事が出来て、ブランチも切ってコードの修正が完了したらgit add
コマンドでcommitが出来る状態にします。
commitが出来る状態にする事をステージング
といいます。
git add "ステージングする対象ファイルのパス"
でもいちいちファイルを指定してステージングするのは怠いので
以下の様にカレントフォルダ以下全てを対象とする
コマンドを使うことが多いです。
git add .
【git commit】 ステージングしたファイルの変更を確定する
さっきからcommitと当たり前のように言っていますがcommitは変更を確定させる事
です。
このcommitという処理をする事でローカルで修正したコードを
リモートリポジトリに送る事が出来ます。
コミットは基本以下のコマンドで実施します。
# -m でコメントを記載してcommit
git commit -m "コメント"
【git push】ローカルで行った変更をリモートリポジトリに送る
commitまで出来たらgit push
コマンドで変更した内容をリモートリポジトリ送る。
git push ${反映したいリモートリポジトリ} ${ローカルのブランチ}
リモートリポジトリのアクセス先のデフォルトを origin
といいます。
originはgit remote -v
で確認できます。
PS C:\Users\asaka\Documents\git\hobby> git remote -v
origin https://github.com/zukizukizuki/hobby.git (fetch)
origin https://github.com/zukizukizuki/hobby.git (push)
PS C:\Users\asaka\Documents\git\hobby>
↑の例だと https://github.com/zukizukizuki/hobby.git
が origin
です。
今回の例は https://github.com/zukizukizuki/hobby.git
に反映したいのですが
長いので一般的に origin
とします。
git push origin test
ちなみにgit checkout
でブランチを切っていない状態で git push origin master
なんてコマンドを
打ってしまったら後述するPR(プルリクエスト)は作成されず、即座に反映されてしまいます。
この後も説明しますがPRを作ってみんなで問題ない事を確認してマージ(反映)するのが
チーム開発の基本なので絶対にブランチを切りましょう。
webUIからPRを作る
git push では送った修正内容を元にPR(プルリクエスト)を作成します。
プルリクエストとはローカルリポジトリでの変更を他の人に共有する機能
です。
これを使う事で 友人A に「こういう変更したよ~」というのを共有する事が出来ます。
手順としては
1.WebUI から対象リポジトリにアクセス
2.「Pull requests
」からPRを作成
このPRが作成出来れば LINEで共有してた修正内容を友人Aは一目で確認することが出来ます。
問題なければマージ(反映)する
今回のケースだと依頼元の友人Aも修正内容に納得してくれたらWebUIからマージします。
職場の場合は大体偉い人がレビュワーになります。
WebUIの作ったPRから Merge pull request
ボタンを押してマージします。
結論
Gitは人によっては覚えるまで時間がかかるかもしれませんが、
慣れちゃえばすごく楽にコードの共有が出来ます。
今回も実際にやったのは
- git clone
- cd でリポジトリに入る
- git checkout
- 編集する
- git add
- git commit
- git push
- PR作る
- マージする
だけです。
開発案件では間違いなく使う技術なので必須スキルですが、最近インフラでもIaCが流行ってるので習得しておきたいスキルです。
他にもgit pull や git log や git fetchなど色々コマンドがありますがひとまず今回紹介したコマンドだけ覚えておけば仕事は出来ます。
コメント