Memo

メモ > 技術 > 開発: Git > 基本メモ

■基本メモ
Git初心者への説明用メモ 以下から同じ内容をスライドショーなどで見ることができる Gitの基本 - Qiita https://qiita.com/refirio/items/938ebf399029d9c62b3f ■バージョン管理システムとは ・作業内容を記録していくことができる ・過去の作業内容を簡単に把握できたり、特定の日時の状態に戻したりができる フォルダを丸ごとコピーし、日付を付けて置いておく…というのもバージョン管理の一つ ただしその方法だと、細かな変更内容を把握するのは難しい Gitでバージョン管理することにより、いつでも過去の状態を参照できるようになる ■Gitの特徴 以下の特徴を持つバージョン管理システム ・分散型 ... 一度サーバからソースコードを取得すればオフラインで作業でき、任意のタイミングでサーバに反映できる ・高速 ... SVNなど他のバージョン管理システムよりも、高速に動作する ・賢いマージ ... 他のバージョン管理システムよりも、作業内容を賢くまとめてくれる ■リポジトリ ソースコードは「リポジトリ」と呼ばれる場所で管理する リポジトリは基本的に、ホスティングサービス上で作成するといい ■ホスティングサービス リポジトリを管理してくれる場所 一人で作業する場合は無くてもいいが、バックアップのためにも使用することを推奨。複数人で作業する場合は必須 有名どころだと、以下のようなものがある ・GitHub 一番メジャーだと思われる。オープンソースで公開する場合に最適。非公開リポジトリを作りたい場合は有料 …だったが、2020年4月15日現在、非公開リポジトリもチーム利用も無料になった https://github.com/ https://github.com/pricing https://www.publickey1.jp/blog/20/githubactionscicd.html ・Bitbucket 無料で非公開リポジトリを作れる。1リポジトリに5ユーザ以上参加させたい場合は有料 https://bitbucket.org/ https://bitbucket.org/product/pricing ■Git操作 ・コマンドで操作する ・Sourcetreeなどグラフィカルなソフトウェアで操作する の2つがある。WindowsやMacで使うなら、グラフィカルなソフトウェアを使うといい ■クローン リポジトリの内容をローカルにコピーすること Gitではサーバ上だけでなくローカルにもリポジトリの複製を持ち、定期的に同期させる ■コミットとプッシュとプル ・コミット ... ローカルのリポジトリに作業を記録する ・プッシュ ... コミット内容をサーバのリポジトリに記録する ・プル ... サーバのリポジトリの内容をローカルのリポジトリに反映する(他の人の変更内容を取り込む) ■ファイルの状態 ・作業ディレクトリ ... 作業中のファイル ・ステージングエリア ... 次にコミットされるファイル ・Gitディレクトリ ... コミットされたファイル の3つがある 作業ディレクトリにあるファイルをステージングエリアに移動させ、 それに対してコメントとともにGitディレクトリに移動させる(=コミット) ステージングエリアがあることにより、一部のファイルのみコミット対象にすることができる ここまでできれば、最低限だがGitを使うことができる ■ブランチとマージ ブランチを作れば、いくつもの作業を同時に進めることができる 作業が完了したら、もとの場所にマージ(統合)することができる 複数人で作業するときに、特に力を発揮する ■コンフリクト マージの際、作業内容が競合したことをいう ・マージ元の作業が正しいとみなす('相手の変更'を使って解決) ・マージ先の作業が正しいとみなす('自分の変更'を使って解決) ・手動で調整し、コミットしなおす(解決済みにする) という対応がある Sourcetreeの場合、競合しているファイルを右クリックし、「競合を解決」から解決方法を選択できる なお、競合している箇所は以下のように書き換えられる 手動で調整する場合、「<<<<<<< HEAD」などの情報は不要なので削除する
<<<<<<< HEAD <p>5月6日開催</p> ======= <p>5月5日開催</p> >>>>>>> update-news
■ブランチモデル gitでは自由にブランチを作成できるが、何のルールも無く作成すると混乱のもとになる 有名どころのルールとして以下がある ・GitHub Flow ... 小規模開発向け mainブランチから開発用ブランチを作成し、作業が完了したらmainブランチに戻す ・Git Flow ... 中規模〜大規模開発向け main、develop、feature、release、hotfix という5種類のブランチを使い分ける ・GitLab Flow ... 上記で対応が難しい場合にと考え出されたもの mainブランチから開発用ブランチを作成し、作業が完了したらmainブランチに戻す またproductionやstagingなど、環境に応じたブランチを持つ mainブランチは本番環境とイコールではなく、開発の中心ブランチとなる ・Trunk Based Development ... 開発者はビルドが通る状態を保ちながら、小さな修正をそのままmainブランチにコミットする 大きな機能開発の場合、機能のON/OFFをフラグで管理する これにより、大規模なマージ地獄から抜けられる 自動テストが整備されていることが前提にはなる 【図解】git-flow、GitHub Flowを開発現場で使い始めるためにこれだけは覚えておこう:こっそり始めるGit/GitHub超入門(終) - @IT https://www.atmarkit.co.jp/ait/articles/1708/01/news015.html git flowとgithub flowとは?その違いは? - Qiita https://qiita.com/mint__/items/bfc58589b5b1e0a1856a Gitlab-flowの説明 - Qiita https://qiita.com/tlta-bkhn/items/f2950aaf00bfb6a8c30d GitLab flowから学ぶワークフローの実践 | POSTD https://postd.cc/gitlab-flow/ アプリ開発にはGitlab flowが合うと思います - Shoichi Matsuda's diary https://shoma2da.hatenablog.com/entry/2015/11/04/233534 Git の最新アップデートから考える開発手法の潮流 - Speaker Deck https://speakerdeck.com/yuukiyo/trends-in-development-methodology-from-the-latest-git-updates DevOps 技術: トランクベース開発 | DevOps の能力 | Google Cloud https://cloud.google.com/architecture/devops/devops-tech-trunk-based-development?hl=ja もうリリースは怖くない ― 大きな変更を安全に本番適用するTips - Cybozu Inside Out | サイボウズエンジニアのブログ https://blog.cybozu.io/entry/2021/07/28/080000 これらのブランチモデルをベースに、独自のブランチモデルで運用しているところもある ■コミットの粒度とメッセージ あとで見直しやすいように、ということを意識してコミットするといい 「コミットの際に課題番号も書く」など、独自のルールが設けられることも多い ■.gitignore バージョン管理対象外にするファイルを指定できる Thumbs.db や .DS_Store は管理対象外にしておく その他環境依存の設定ファイルや、巨大すぎる動画ファイルやライブラリも省いておくと管理しやすくなる ■課題管理・Wiki 大抵のホスティングサービスには用意されている うまく使うと便利。この部分は、BacklogやRedmineなど他のサービスやツールを使うこともある

Advertisement