LoginSignup
3
1

GitHubハンズオン 第4回 ~いろいろ取り消し編~

Last updated at Posted at 2023-04-29

GitHubハンズオン 第4回 ~いろいろ取り消し編~

本記事は、GitHubハンズオンの第4回の資料です!
過去の記事を読んでいることを前提としていますので、ご注意ください。

GitHubハンズオンシリーズ

いろいろ取り消したい

操作を間違えることってよくあります!

  • ファイルを間違って編集しちゃった!
  • コミットメッセージでタイプミスしてしまった!
  • 間違えてコミットしてしまったー

間違えた作業を「元に戻したい」ことってよくありますよね?
今回はそういう 取り消し 作業に焦点を当てた回です!

リポジトリの準備

第1回ハンズオン で作成した GitPractice リポジトリを今回も使います!

もし、リポジトリを削除してしまった方は、再作成をお願いします!

Forkを開き、フェッチ&チェックアウトして、mainブランチを最新にしてください。

チェックアウト

ダブルクリックでチェックアウト

第2回ハンズオン では、右クリックでチェックアウトする方法を紹介しましたが、ダブルクリックの方が早いので、紹介します!

mainをダブルクリックすると、mainがチェックアウトできます!

image.png

ブランチ名をダブルクリックすると、そのブランチをチェックアウトできます。

時短テクニックです!

Checkout Branch: Don’t change

作業ディレクトリを開き、新しいファイルを追加してください。コミットはしないようにお願いします。

Local Changes(1) がついていればOKです。

image5.png

この状態で、別のブランチをチェックアウトしようとしてください。

すると、以下のようなダイアログが表示されます。

image18.png

Don’t change を選んでチェックアウトすると、作業ディレクトリに追加したファイルは維持されたまま、他のブランチがチェックアウトできます。

ただし、これはいつも必ず成功するとは限りません。

チェックアウトするブランチと、編集内容が競合した場合、以下のエラーが表示されます。

image16.png

Local Changesがない状態でチェックアウトするようにしましょう!

Checkout Branch: Discard

Discardを選ぶとどうなるのでしょうか?

image27.png

Local Changesにある変更をすべて削除してからチェックアウトします!

取り返しのつかない ことになる可能性があるので、何が起こるか理解した上で使いましょう!

(効果をわかって使うのはOKです)

Discardというのは、破棄するという意味の英単語です。

手札(card)を離す(dis)が語源です。

Checkout Branch: Stash and reapply

Stash and reapplyは使いこなすのが難しいため、今回のハンズオンではとくに実践しません。

Stashは、作業ディレクトリにあるファイル変更を別の場所に退避し、Local Changesがない状態にする機能です。

Applyは、別の場所に退避したファイル変更を、作業ディレクトリに反映して、Local Changesがある状態にする機能です。

ディスカードチェンジ

右クリックでDiscard changes

作業ディレクトリにファイルを追加して、 Local Changes がある状態にしてください。

Unstaged にファイルがあればOKです。

image28.png

Unstaged にファイルを 右クリック > Discard changes をクリックすると、ファイル変更を削除できます。

つまり、ファイルを変更する前の状態に戻せます。

「とあるアイデアを試してみたけど、やっぱりやめた」という場面で、 Local Changes がない状態へしたいときに便利です!

ただしこれは、取り返しがつかない作業 なので、何が起こるか理解した上で使うようにしましょう!

DeleteキーでDiscard changes

Forkの場合、 Unstaged のファイルを選択した状態で、キーボードのDeleteキーを押すと、Discard changesが実行できます!

時短テクニックです!

(Fork特有のショートカットキーなので、他のソフトでは使えないかもしれません。)

プル

プル = フェッチ + チェックアウト

image23.png

プルは、フェッチとチェックアウトを連続して実施します!

Local Changesがある状態でプルを実行すると、チェックアウトと同じエラーが発生します。

リモートリポジトリの情報を取得したいだけなら、フェッチの方が安全 です。

リセット

コミットを削除したいときに使えるのが、リセットです!

Forkには、3種類のリセットがあります!

非常によく使う機能ですが、選択を間違えると、取り返しのつかないことになります ので、十分に理解してから使いましょう!

image6.png

Soft Reset / Mixed Reset

作業ディレクトリの状態は維持しつつ、コミットだけ削除したいときに使います。

  • Mixed は、コミットされてたファイル変更が Unstaged に移動します。
  • Soft は、コミットされてたファイル変更が Staged に移動します。

あまり違いはないので、とくにこだわりがなければ、デフォルトの Mixed を使えば良いです。

Hard Reset

コミットを削除して、作業ディレクトリを以前の状態へ戻したいときに使います。

非常に危険で取り返しがつかない操作なので、機能を十分に理解してから使いましょう!

リワード

コミットメッセージでタイプミスをする

以下のように、コミットメッセージをタイプミスしてしまうことはよくあります。

image11.png

今回はあえてタイプミスをしてコミットしたものをプッシュします。

コミットメッセージを変更する

修正したいコミットで右クリックして、 Interactive Rebase > Reword をクリックします。

image31.png

コミットメッセージを修正して、OK > Rebase で修正できます。

image1.png

これでコミットメッセージを修正できました!

しかし、ローカルリポジトリのブランチしか修正されていません。

image22.png

強制プッシュ

こういうときは、強制プッシュをします。

プッシュする際に、 Force push にチェックを入れてから、プッシュしてください。

image35.png

変更後のコミットで上書きされました。

image30.png

強制プッシュのリスク

強制プッシュを利用すると、リモートブランチの内容を強制的にローカルブランチの内容で上書きします。

使い方を間違えると、取り返しのつかないことになりますので、何が起こるか理解した上で使いましょう!

さいごに

今回はここまでです!おつかれさまでした!

次回は無視リスト編です!引き続きこちらも実践していただけると嬉しいです!

本記事作成にあたり、以下のページを参考にさせていただきました。ありがとうございました!

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