ゆろぐ

ゆるく、ろぐる。独学フロントエンドエンジニアの技術ブログ

【Git】プル前にコミットしてしまってプッシュ(プル)できなくなった時の対処方法(git graph)

最近このブログの収益化をしようと考えているのですが、久々にGoogleAdSenseの申請をしたら見事に落ちました。

個人的に審査に落ちたブログが初めてなので原因を一つ一つ潰していく作業をしているのですが、考えられるのは記事の少なさ。全体の投稿数的には足りていると思いますが、カテゴリページを見たときに1記事とかしないページがあるのが問題かと思い対策中です。

ということもあって、本日もGitGraphを使ったGit操作に関するネタをご紹介。

初心者なら一度は経験あるよね?プルしないでコミットしちゃうこと

僕は基本的にVSCodeのGitGraphしか使っていないので、リモートリポジトリに最新のコミットがプッシュされている状態で、プルをせずにローカルにコミットをすると、コミット履歴がこんがらがってしまってローカルからプッシュすることができなくなってしまいます。

Gitに限らずですが、慣れていないものでエラーが出てくると結構焦りますよね。そもそもエラーが英語だから理解できない文章という意味での怖さもある・・・。笑

しかもこのエラーは一人で作業しているときには起きないエラーで、他の人と共同作業しているからこそ起きるエラーなので、下手なことしたら他の人に迷惑をかけるかも・・・。と思ったらもう何もできなくなってしまいます。

GitGraphでの解決策①リモートの内容をマージする

もしいつも通りに作業していて、重たいファイルなども含めていないのにプッシュできなくなったときは、今回のような状況になっている可能性が高いです。

そんな時は一旦「git fetch」をしてみましょう。

Git Graphから操作する場合は三点リーダーから「フェッチ」を選ぶだけです。

もしリモートブランチに他の人がプッシュしている場合、この操作をすることでそのコミット履歴が自分のローカルリポジトリにも反映されます。

ローカルリポジトリに反映されると、ブランチが分かれたようにコミット履歴が2本(もしくはそれ以上)に分かれているので、リモートにあるコミットの部分を選択してマージしましょう。

マージができればリモートとローカルの内容に差異がなくなるので、無事にプッシュできるようになります。

GitGraphでの解決策②未コミットがあるならstash!

「git pull」というコマンドは「git fetch」と「git merge」を行うコマンドの事なので、プルができないという場面ではマージができない状態にあることが原因になっていることがあります。

そういった場合、一旦「git fetch」を行なってみてリモートの最新コミットを取得。もし最新のコミットがあって、自分のローカルで未コミットの作業内容があるとマージができないので、一旦未コミットの内容をstashしておきましょう。

stashした後は「git pull」もしくはフェッチで取得した最新のものをローカルでマージしてあげればOK。

未コミットの作業内容によっては普通にコミットしてからの「git pull」でも対応できることもあるようです。

↓「git stash」については過去記事を参考にしてください。

別のGit管理の方法で対応する

まだ使ったことはありませんが、Sourcetreeというソフトを使ってGitを管理する場合は、この辺りをよしなにしてくれるみたいです。(このブログが収益化できてもう少し仕事も落ち着いたらいろんなものを使い倒して遊びたい)

こちらについてはチラッと聞いただけの話で、僕自身が確認したわけではないので興味がある方はご自身で調べてみてください。

面倒なエラーが起きないようなGit管理をすることが大切

僕の場合、基本的には一人での作業が多く、案件の30%程度が複数人での開発です。

複数人での開発が必要な案件の場合、あくまでも開発者の一人としてアサインするのでGitの管理方法などはクライアント側の仕様に合わせることがほとんどですが、今回ご紹介したようなエラーが起きるのはほとんどGitの管理方法が明確になっていない案件・・・。

そこまで大きな開発でない限り、一つのブランチで同時に複数人が作業することもないと思うので、きちんとGitのルールが作られていれば今回のようなエラーが起きるとは考えにくいと思うんですよね。

問題が起きるとすればそれぞれのブランチをマージするときにコンフリクトが多すぎるとか、そういう問題だと・・・。

個人でできるのはフェッチをする癖をつけること

社内のプログラマーとかなら、こういった問題が起きないように日々業務方法も改善されていくと思いますが、僕のようなフリーランスだとこのあたりはもはやクライアント次第。

自分にもっと技術力と説得力と勇気があれば改善の提案もできるのかもしれませんが、現実的にはなかなか難しいものがあります。

フリーランスができることとしては、作業前にプルやフェッチ(個人的にはフェッチ推奨)する癖をつける、コミット前にもフェッチをしてからコミットする。という癖をつけていくのが一番かな。と思います。

【Git】プル前にコミットしてしまってプッシュ(プル)できなくなった時の対処方法(git graph)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

トップへ戻る