1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

※前回の記事の続きになります。

今回は、「GitHubを使う上で起こる様々な問題を対処できるようにしよう」という目標でやっていきます。

今回も前回と同様に初心者向けなので、

  • 本格的な運用を学びたい
  • ある程度の問題に対処できる
  • GitHubをちゃんと学びたい

という方には向いていない内容になっています。注意してください。

また、教材として作ったので一部内容がわかりづらいかもしれません。

しかし前回よりレベルが上がったと仮定して図の多用はやめたのですっきりとまと待ってるかなと思います。

今回使用した環境

  • Windows 11(25H2)
  • GitHub Desktop
  • Git LFS(Git Large File Storage)
  • Unity Hub & Unity Editor(6000.3.11f1)

元に戻す

ここからは変更した内容を戻すことに焦点を当てて説明していきます。

どうしても開発をしていると「ある地点の状態に戻したい」ということが多々あるかなと思います。または「壊してしまって戻さないといけない」みたいな時も出てくると思います。

そういったときの対処について解説していきます。

1. Discard

簡単に言うと、「最後にCommitした状態」に戻せます。

例えば、

スクリーンショット 2026-04-03 080823.png

のように、まだCommitする前で「編集中に大事なファイルを消してしまい元に戻したい」という状況になったとします。

このような場合、

スクリーンショット 2026-04-03 081133.png

「Branch」→「Discard All Changes」を選んでみましょう。

スクリーンショット 2026-04-03 081631.png
ここにもある通りDiscardした後はする前の状態に戻せません!
問題なければ「Discard all changes」を押してみよう!

すると変更がすべて取り消され、「最後にCommitした状態」になります!

2. Undo&Reset

次はResetコマンドというものを紹介したいのですが、GitHub Desktopには便利な「Undo」という機能もあるので合わせて紹介します。

resetコマンドは、簡単に言うとCommitの取り消しができるコマンドで、Pushする前に使える操作です。
(Push後は注意するところがあるのであまりお勧めできません。)

オプションがいくつかあるので、それについて説明します。

〇soft(Undo)

まずはsoftです。これは「Commitを一旦取り消せる」というコマンドです。

スクリーンショット 2026-04-03 090534.png
名前の通りですが「誤ったCommit」を出した前提で進めます

では、コマンドプロンプトを起動します。
起動のさせ方は前回の「Git LFS」のセットアップ時と同じになっているので参照してください。

スクリーンショット 2026-04-03 083119.png
もしくはGitHub Desktopの画面上側にある「Repository」→「Open in Command Prompt」からでも起動できます。

例えば最後にしたCommitを一旦取り消したいときは、

cmd
git reset --soft HEAD~1

というコマンドを使います。

実行後、GitHub Desktopを見ると、

スクリーンショット 2026-04-03 091333.png
変更してなくても差分が出てくると思います

こんな感じでCommitだけが取り消された感じになってます。
Commitしたときに変更した内容は取り消されません

コマンドを解説すると、HEAD~1の部分で、どこまでのCommitを取り消すか指定しています。今回の場合だとHEAD(今の最新の状態)から~1(一つ前)を指定しています。
これをHEAD~2にすると2つ前のCommitまで一気に取り消ししてくれます。

ただし先ほどから言っているように「変更は保持される(取り消されない)」ので、あくまでCommitだけ取り消しになるのがこのsoftの特徴です。

スクリーンショット 2026-04-03 091717.png

もしくは、このように左下「Undo」を押すとgit reset --soft HEAD~1と同じ操作をすることができます。

〇mixed

softの「ステージの変更」を保持しないバージョンです。

スクリーンショット 2026-04-03 095829.png
Commitするファイルの部分を「ステージ」といいます。

ここのチェックボックスのチェックが入ってるか入ってないかっていう設定を引き継がずにしたいときはmixedにしましょう。

例ですが、

cmd
git reset --mixed HEAD~1

または

cmd
git reset HEAD~1

と打ち込むと、一つ前のCommitへ戻せます。(基本は変わらないです)
しかしステージの変更は引き継がれていないと思うので、設定を引き継ぎたくないときはこれを使いましょう。

〇hard

最後が名前の通り一番強いです。

今まで変更内容が残っていたと思うのですが、これは変更自体もすべて戻してしまいます。

正確に言うと違いますが、イメージとしては「指定したCommitまでの取り消し」に加えて「Discard all changes」を使う感じです。

例を出すと、

cmd
git reset --hard HEAD~1

という感じになります。
実行すると指定したCommitに戻って変更がすべて消えたと思います。

強制リセットしたいときに使えますが、使うには少し注意がいるので気を付けましょう。

Pull requestの問題(コンフリクト)

次はPull requestの際の問題の解決方法を教えます。

例えばGitHubのPull requestの画面で、

スクリーンショット 2026-03-31 201833.png

のように出た場合は、そのままではマージできないということを示しています。

なぜマージできないかというと、相手のコードと自分のコードで「競合(コンフリクト)」が起きてしまっているからです。

例で出すと、

Sample.cs (mainブランチの方)
int score = 200;
Sample.cs (mainから切ったfeatureブランチの方)
int score = 100;

こんな感じの時に、「どっちにすればいいんだ?」となってしまうことこそがコンフリクトです。

こうなったら手動で解決しなければなりませんが、きちんと解決する方法があるので安心してください!

〇解決方法

まず、発生してしまった場合はGitHub Desktopで一度Fetchしましょう。
その後上側にあるバーから「Branch」→「Update from main」を押します。

スクリーンショット 2026-03-27 212232.png

するとmainブランチの内容を選択しているブランチへ取り込もうとします。
(「main」→「feature」みたいな感じで取り込んでくれます)

するとPull requestと逆のことをしようとしているだけなので、当然うまくマージできなくてコンフリクトが発生します。

このようになった場合、例に出したSample.csのコンフリクトが起きている場所に、

Sample.cs
<<<<<<< HEAD
int score = 100;
=======
int score = 200;
>>>>>>> main

と自動的にソースコードを書き換えて表示してくれます。
また、該当するファイルはGitHub Desktop上だと警告マーク(:warning:)がつくと思います。

これの見方ですが、「=======」で区切られていて、上が自分のコード、下が相手のコード(マージされる側のブランチの内容)になっています。

修正のやり方は簡単で、どっちのコードを優先すればいいのかを手動で書き直してあげるだけです。

なので、自分のやつを通したいなら

Sample.cs
int score = 100;

こうするだけでOKです。

逆に相手の方(今回の場合はmainブランチ)に合わせるなら、

Sample.cs
int score = 200;

と書き換えてあげればOKです。

最後にCommitとPushをして、GitHubに上げましょう。そうすると、問題がきちんと直っているようであれば「Ready to merge」と出てマージできる状態になると思います。そうなれば修正完了です!

最後に

いかがでしたか!

ここまで学べば一通りの運用ができるんじゃないかなって思いますが、もっと詰めればさらに効率よく、安全に運用することができます。

ぜひ「もっとGitHubについて知りたい!」っていうことがあったら、調べてみましょう!

2回分で「意外と簡単に始められる!」っていうのがわかってもらえたらうれしいです!

最後までありがとうございました!

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?