入社して1か月半経ったある日…
上司<この案件はGitを使うから覚えてね~
a-takano<わかりました。(Gitってなんぞ?)
a-takano<本格的にbacklogを使うようになってきたな…
とりあえずサルでもわかるGit入門から始めよう!
こっちもわかりやすいなー→【イラストで覚える】初心者のためのGitとGitHub用語集
随時更新していこう。
使っているのはTortoiseGit→https://tortoisegit.org/
Gitってなんぞや?
分散型バージョン管理システムの1つ。読みは「ぎっと」。
ファイルの状態を更新履歴として残せて、過去の状態に戻せたり編集した部分との差が見れる→ファイル名に_aとか日付とか付けなくてもいい!
同じファイルを2人以上で編集してアップロードをしようとしてもアラートが出るから、「間違って他の人の編集内容を上書きしちゃった!」なんてこともない。
リポジトリってなんぞや?
ファイルやディレクトリの状態を記録するとこ。変更履歴は格納され記録されていく。
普段の作業はローカルリポジトリで、作業が完了したらリモートリポジトリに
プッシュ(=アップロード)する。
リモートリポジトリ
自分の手元外にあるリポジトリ。他の人と共有するために使う。
個人開発でも使える。
Cloudとはちょっと違う。
ローカルリポジトリ
自分の手元にあるリポジトリ。自分のマシン内に作られる。
リポジトリを共有しよう!
Gitをインストール後諸々設定して最初にやったのが【リモートリポジトリのクローン】だったので、これから記述する。
リモートリポジトリのクローン
他の人が作ったり変更したリモートリポジトリを、丸ごと複製(=クローン)して自分の手元に置くこと。
リモートリポジトリにプッシュ
ローカルリポジトリで加えた変更を、リモートリポジトリで共有すること。
つまりアップロードすること。
リモートリポジトリからプル
リモートリポジトリからローカルリポジトリへダウンロードすること。
リモートリポジトリの方が変更履歴が新しかったら、その内容を取り込む。
ファイル編集前は必ず行う!!
ブランチを切ろう!(ブランチの作成)
同じリポジトリで修正が何か所もあって、それを複数人が同時に操作したら「いつの間にか変わってる!?」となってしまう。それを防ぐためにブランチを切る(作る)必要がある。「切る」って言っているのは【枝は切るもの】だからでしょうか。
【ブランチA】【ブランチB】【ブランチC】と修正内容ごとに分ければ、他の人の作業の影響を受けなくて済む。
チェックアウト
ブランチを切り替えること。自分が作業するリモートブランチに切り替えて、作業する!
ファイルをコミットしよう!
ファイルのコミットとは、ファイルの変更や追加したことを記録すること。
コミットメッセージ
編集した内容はコミットメッセージに記述する。メッセージの記述は必須。
案件名・タスク名など
空行
変更した点・変更理由など
こんな感じで書くと分かりやすい。
コミットファイル
自分が編集したファイルだけが表示されていればOK。
編集していないファイルが表示されたり、足りなかった場合は、masterからプルしてやり直し。
プッシュしよう!
プッシュ=アップロードのこと。ローカルリポジトリの変更履歴をリモートリポジトリで共有する。
コミットするときに【コミットしてプッシュ】を選択しクリック。
プッシュ先ブランチは、対象の作業ブランチを選択。
成功すればリモートブランチが作成され、backlogにも通知。
プルリクエストしよう!
「コードレビューをしてください!」とお願いする&ローカルリポジトリでの変更を他の開発者に通知することがプルリクエスト。
backlogからプルリクエストができるので
- ターゲットブランチ(マージ先のブランチ、masterとか)を選択
- プルリクエストブランチ(マージするブランチ)を選択
- タイトル・コメントを分かりやすく書く
- 担当者を選択(自分ならマークを選択すればいい)
- お知らせしたいユーザも入力
- 適切に内容を入力し終わったら、【プルリクエストを追加】
これでプルリクエストが追加された。
マージしよう!
差分確認もOKだったので、加えた修正を元のブランチ(masterなど)に統合する。
マージもbacklogからできる。
ブランチを削除しよう!
backlogからは【マージ】の隣に
- マージ後に作業ブランチを削除する
というのがあるので、チェックを入れればブランチが削除される。
トピックブランチが削除されるだけで、リモートブランチは削除されない!
リモートブランチも必要ないなら削除。
競合が発生した
初Git&初backlogでいよいよマージ!と思ったら
競合が発生してマージ出来ません
一度リモートリポジトリからプルして、更新したファイル反映させようと思ったけど
gitは正常に終了しませんでした(終了コード 1)
とエラー発生。
ググって「バグかもしれないから更新すれば良い」とあったが、これは関係なさそうと判断。
先輩方に助けを求める
マージできるようにしたい旨を説明し、無事に解決しました。
そもそもリモートリポジトリからプルできないのも問題だったので、そこから解決していった。
- リモートリポジトリからプル→エラー発生
- エラーメッセージで「コミット出来てないよ」という旨が出た
- 自分が作業しているリモートブランチが原因かもと思い、削除しプルしたけど失敗
- 変更の取り消しを試みる。右クリック→TortoiseGit→変更の取り消し
- もう一度リモートリポジトリからプル→成功!
- 改めてブランチを作成→ファイル修正→コミット&プッシュ→プルリクエスト→マージ&ブランチを削除