0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Git初心者が現場で学んだ3つの基本と失敗談

0
Posted at

新米エンジニアの皆さん、Gitで「push」できなくて詰んだ経験はありませんか?

Gitの基本概念を押さえる

Gitは分散型のバージョン管理システムです。ローカルにリポジトリを作成し、ステージングエリアに変更を追加してからコミットすることで履歴が残ります。git initで空のリポジトリを作り、git add .でファイルをステージングし、git commit -m "初めてのコミット"でSnapshotを保存します。リモートリポジトリ(GitHubやGitLab)とPush・Pullすることで、複数人での開発が可能になります。自分の最初の経験では、git statusで変更があるか確認し忘れてgit addを忘れたことがありました。そのせいでコミットが空になり、後で「何が変わったか」把握しにくくなりました。この経験から、変更を確認したらすぐにgit addする習慣をつけるようになりました。また、git log --onelineで簡潔な履歴を見ると、どの commit が何を意味したかが分かりやすくなります。さらに、ブランチを作成してgit checkout -b feature/xyzで新機能開発を始めると、レビュー対象が明確になり、レビュー時のトラブルを減らすことができました。この経験を振り返ると、バージョン管理の重要性を実感し、毎朝のスタンドアップでも Git の進捗を報告するようになりました。Gitの基本を理解することで、チーム開発だけでなく個人開発でも効率的に作業できるようになります。さらに、リモートリポジトリへプッシュ後はgit fetchで最新情報を取得し、git statusで作業ブランチが最新か確認することが、トラブル防止に役立ちます。

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

最新ツール・トレンド情報をずんだもん×めたんが解説するYouTubeチャンネルを運営しています!
いいね、チャンネル登録してもらえると嬉しいです🙇‍♂️


ハジメル.dev: https://hajimeru-dev.vercel.app/

「ひとりで続けるのは難しい」「何から学べばいいか分からない」という方向けに、
プログラミングのマンツーマンレッスンサービス「ハジメル.dev」も運営しています。
未経験OK・オンライン完結・月額制/違約金なしなので、気軽に無料相談してみてください🙇‍♂️


海外テックニュースを追いたいけど、英語や情報量の多さで大変…という方向けに、
Hacker News の話題を日本語でサクッと追える「HackerNews 日本語まとめ & AI要約」
を個人開発しました!
技術トレンド収集に使ってもらえると嬉しいです🔥🙇‍♂️
→ HackerNews 日本語まとめ & AI要約: https://hn-matome-2ht.pages.dev/


「ニャンパイアサバイバー」というヴァンパイアサバイバーリスペクトのゲームを作成しました!
もしよろしければ遊んで頂けると嬉しいです😭


習い事教室の先生向けに、SNS 投稿・生徒募集・保護者通知の文章を AI で生成する Web サービス「おしらせAI」を個人開発しました。Next.js + Supabase + LLM で構成しており、無料で月 10 回まで試用できます。よければ触ってみてください。

→ おしらせAI: https://oshirase-ai.vercel.app/

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

実際に使ってみた失敗談

最初のプロジェクトでgit push origin masterを実行したが、同時にgit pullをせずにプッシュした結果、リモート側の歴史とローカルの歴史が不一致し、マージConflictが大量に発生しました。当時は「pullすればいい」と軽く考えていましたが、実際にはgit pull --rebaseを使うか、事前に最新の状態を確認する必要がありました。あるとき、誤ってgit reset --hard HEAD~1と入力し、直前に作成したコミットを失くしてしまい、焦ったことがあります。その後、コミット前にgit stashで一時保存する習慣を付け、失敗を防ぎました。失敗から学んだことは、常にgit statusで現状を確認し、重要な変更はgit commitしてからでないとプッシュしないことです。また、コミット後にgit pushを行う前に必ずgit fetchで最新情報を取得し、リモートとローカルの差異を把握してからプッシュするようにすると、不要なConflictを減らすことができました。

コミットのコツとリベース

commitはできるだけ小さく、atomicにまとめるとレビューがしやすくなります。例えば、git add src/main.pyだけでなく、git add src/とディレクトリ単位で staged すると、意図がはっきりします。コミットメッセージは「何をしたか」だけでなく「なぜしたか」も書くと、後から見返したときに意味が分かります。git commit -m "feat: ユーザー登録画面を追加"のようにプレフィックスを付けると、チーム内での分類が楽になります。リベースは、複数の小さなコミットをまとめてきれいにしたいときに便利です。git rebase -i HEAD~5でインタラクティブにリベースすると、不要コミットを削除したり、メッセージを修正したりできます。実際にリベースを行う際は、プッシュ前に必ずローカルで実行し、リモートに強制プッシュ (git push --force) を行うと他の開発者の作業が壊れるリスクがあるので注意が必要です。リベース後の衝突を解消するために、git mergetoolを活用すると視覚的に差分を確認しやすくなります。また、リベース前後にgit diffで変更点を確認し、問題が無いか再度確認すると安心です。

チームでのコラボレーション

チーム開発では機能単位でブランチを作成し、feature/loginbugfix/issue-123といった名前付けをすると、レビュー対象が明確になります。プルリクエスト(PR)を作成したら、必ず上司や同僚にレビューを依頼し、git diffで変更点を確認しながらフィードバックをもらいます。レビューの際に「この変更はなぜ必要か」をコメントで残すと、レビュー者が意図を把握しやすくなります。また、.gitignoreで不要なファイルやディレクトリを除外しておくと、リポジトリの肥大化を防げます。私のチームでは、毎日git fetchして最新情報を取得し、git mergeで統合することで、Integration Conflictを最小限に抑えています。さらに、PRのタイトルに issue番号を記載すると、追跡が容易になり、レビュー担当者が変更の背景をすぐに把握できます。チーム内でコードレビューのルールを決め、例えば「必ずコメントを残す」や「レビューは48時間以内に行う」などのガイドラインを設けると、コミュニケーションが円滑になります。

日常で意識すべき3つの習慣

定期的にリモートへプッシュする: git push originを毎日のルーティンに組み込むと、ローカルの変更がバックアップされ、データロスを防げます。コミット前にgit statusgit diffを確認し、無駄なファイルを除外する習慣をつける。コミット履歴を定期的に git log --oneline --graph --allで眺め、どのブランチでどんな変更が行われたかを可視化する。この3つの習慣を続けると、Gitのトラブルが減り、開発スピードが上がります。これらの習慣をチーム全体で共有し、新人向けのハンドブックにまとめると、学習曲線が緩やかになり、チーム全体の生産性が向上します。また、これらの習慣を続けることで、将来的に大きなプロジェクトでもスムーズに作業が進み、キャリアの成長に直結します。

まとめ

Gitは習得すれば開発効率が飛躍的に向上するツールです。基本概念を押さえ、失敗から学び、コミットのコツやリベースの使い方、チームでのブランチ運用を意識するだけで、初心者でもスムーズに作業が進みます。ぜひ今日学んだことを実践し、少し先を歩いた先輩のように、Gitを味方にしていきましょう。Gitの進化に合わせて、定期的に公式ドキュメントや comunidadの情報をチェックし、最新のベストプラクティスを取り入れることが、長期的な成長につながります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?