はじめに
今年度からほぼIT未経験の状態で、新卒としてこの業界に飛び込んできました。
4月から7月はインフラ関連や開発のための研修を受け、8月からはプロジェクトに参画し、業務に取り組んでいます。
個人だけではなく、プロジェクトで動く場合、必要となるのがGitの操作です。
最初はGitの操作に慣れず困惑しました。
この記事は私と同様にGitの操作で困っている超初心者向けの記事になります。
Gitは何のために必要?
Gitはソースコードの変更履歴を保存します。
これにより、過去の状態に戻ったり、どの変更が誰によって、いつ行われたか追跡することができます。
またブランチ機能によって個別の作業環境を確保しつつ、変更を統合(このことをmergeといいます)することが可能で、チームでの共同作業をスムーズに行うために必要なものとなっています。
ローカルリポジトリからリモートリポジトリに反映してみる
まず前提としてローカルリポジトリ、リモートリポジトリについて確認します。
・ローカルリポジトリ
自分自身が作業した内容を一時的に保存するための場所です。
・リモートリポジトリ
別名共有リポジトリとも呼ばれ、ローカルで作業したものをプロジェクトチームで共有するための場所です。
では本題に入ります。順序立てて説明していきます。
①リモートリポジトリからローカルリポジトリに最新情報を取り込む
git pull origin [ブランチ名]
リモートリポジトリ(origin)から変更を取得し、現在のローカルブランチに統合するためのコマンドです。
この作業をしておかないと、後でリモートリポジトリに反映する際、エラーが起きてしまったり、作業の重複やミスが発生してしまいます。
②作業したいブランチに切り替える
git checkout [ブランチ名]
上記のコマンドで、作業したいブランチに移動できます。
また、新しく作成したいブランチで作業を行う場合は
git checkout -b [ブランチ名]
で行うことができます。
③作業後、ローカルリポジトリの変更をリモートリポジトリに反映する
1.ローカルでの変更を確認する
git status
まずは状態確認を行い、修正したものが未コミットの場合は次に手順でコミットを行います。
2.変更をステージング
git add <ファイル名>
もしくはすべての変更をステージングする場合
git add .
で行えます。変更を破棄する場合は以下のコマンドで行い、次に進みます。
git restore <ファイル名>
3.コミットする
git commit -m "コミットメッセージ"
コミットとはGitのリポジトリに作業内容(ファイルの変更など)をセーブすることです。
コミットメッセージには、プロジェクトで指定されているメッセージに合わせたり、わかりやすいメッセージを入力することを求められます。
4.リモートにプッシュする
git push origin <ブランチ名>
プッシュとは、ローカルリポジトリに保存された変更(コミット)をリモートリポジトリに送信し、反映させることです。
ブランチ名は現在作業しているブランチ名を指定します。
この作業によって、ソースコードをレビューしてもらったり、変更差分をマージできるようになります。
ローカルリポジトリからリモートリポジトリに反映してみる作業の一覧の流れはこのようになります。
覚えておくと便利なコマンド
〇git stash
現在作業しているブランチから、別のブランチに移動して作業を行いたい場合があります。
そんな時にコミットはしたくないけど、一時的に変更したファイルを退避しておきたい場合に便利なコマンドがgit stashです。
git stash save "コメント" -u
上記のコマンドで一時的に退避することができました。
-u は付けなくても実行できますが、-u を使うことで、新規に追加されたがまだGitに追跡されていない未追跡ファイルも退避させることができます。
ですので私は-uを付けることを推奨します。
退避した変更の一覧を表示したい場合は次のコマンドで表示させます。
git stash list
退避された変更は、stash@{0}, stash@{1}, などの番号で表示されます。
退避した変更を再適用するには
git stash pop stash@{n}
nは戻したいstashの番号です。このコマンドは退避リストから戻すと同時に削除してしまうので、もし退避リストに残したまま適用したい場合は
git stash apply stash@{n}
とすると、退避リストに残ったまま再適用できます。
私的には、再適用した場合はもう一度取り出す作業をあまりしないので、退避リストからその都度削除してくれるgit stash pop stash@{n} を推奨します。
〇作業中のローカルリポジトリから最新のリモートリポジトリを取り込む
複数人で作業していると、別の人の作業内容がリモートリポジトリにマージされ、作業中のローカルリポジトリとリモートリポジトリに差分が発生し不都合が発生してしまう場合があります。
そのような場合の対処法をpush済みか未pushの場合にわけて説明します。
【ローカルでブランチのマージ(ローカルリポジトリをpushしてない場合)】
①現在の作業中のブランチの変更分をstashする
git stash save "comment" -u
②ローカルリポジトリを最新化
git pull origin <作業しているブランチ名>
③マージの実行
git merge <作業しているブランチ名>
ローカルでのリベース(ローカルリポジトリをpushしている場合)】
①ローカルリポジトリを最新化
git pull origin <作業しているブランチ名>
②リベース実行
git rebase <作業しているブランチ名>
リベースの注意点は、リモートリポジトリにpushする場合、もしリベースによって履歴が変わっている場合、強制的にプッシュ(--force オプション)する必要があります。
git push origin <ブランチ名> --force
おわりに
今回の記事で紹介した内容はほんの一部です。私もGitを使い始めて数ヶ月なので、日々勉強しながら業務に取り組んでいます。
もし他にも紹介した方がいいコマンドや知識があれば、随時追記したり、新たに投稿していきたいと考えています。
初めての投稿で拙い文章になってしまいましたが、ここまで読んでくださった方、ありがとうございました!