*

【Git】一つ前のcommitに戻す/他のブランチのcommitを取り込む

公開日: : Ruby on Rails, Web技術・ノウハウ

久しぶりにRailsでプログラムを書いている関係で、これまた久しぶりにgitを使っています。

で、早速やり方を忘れていたケースが出てきました^^;

個人的な忘備録として書き残しておきます。

一つ前のcommitに戻す

要は修正前の状態に戻したいというときです。

選択肢1:git revert

今やったcommitで変更された分を打ち消すcommitをすることで、結果的に修正前(前回commit時点)に戻る、という方法です。

git log に履歴が残るので、

  • 後から状況を追いやすくなる
  • commitポイントができるのでrevertする前に戻しやすい

というメリットがあります。

使用例:

①直近のcommitのID(ハッシュ)を調べる

> git log
git1

f693…が直近のcommitですね。コイツ(このファイル修正)を取り消したい。

②  git revert [①のID]

> git revert f693…

git1-2

赤枠のcommitが追加されました。このcommitのファイル変更内容はちょうど前のcommitを打ち消すような内容になっています。

 

選択肢2:git reset

もうひとつの選択肢はcommit自体を無かったことにするという方法です。

取り消したいcommitをまるっと消せてわかりやすいのですが、git revet と違ってgit log に履歴が残らない点に注意。

使用例:

① 選択肢1と同じように直近のcommitのID(ハッシュ)を調べる

② git reset –hard HEAD^
※「HEAD^」で現在のHEADのひとつ前のcommitが指定される

> git reset –hard HEAD^

git3

git logでログを開くと、直近のcommit(ID f693…)の部分が消えているのがわかります。

 

他のブランチのcommitを取り込む

次は「過去のcommitを消したりしてるうちに必要なcommit(変更内容)まで無くなってしまった…」という場合の対処。

こんなときはgit cherry-pickを使います。

 

使用例:

ブランチdevelopから消えてしまった変更内容がブランチAには残ってる!

そこで、ブランチAのgit logにあるcommit(以下赤枠)を自分のブランチ(例:developブランチ)に取り込みます。

①取り込み対象のcommit IDをメモ

> git log ブランチA

▽ブランチAのgitログ
git4

 

②取り込むブランチでgit cherry-pick

> git co develop
> git cherry-pick f693…

これで①のcommit(つまりファイル修正内容)をdevelopに取り込みました。

> git log develop

▽developブランチのgitログ
git5-2

git log で見てみるとちゃんとログに追加されてますね。

 

ひとこと

gitはバージョン管理をするのにとても便利なのですが、ときたま「こういうときどうするんだろう〜?」と考えてしまいます。都度悩むのも時間がもったいなのでこのブログにメモしておきます。

 

参考

ブランチとは【ブランチ】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ

PR

関連記事

Revision Control

ムダな履歴データの蓄積をストップ!『Revision Control』で投稿ページ・固定ページの変更履歴をスマートに管理

投稿ページ・固定ページの「変更履歴」を制御するプラグイン『Revision Control』をご

記事を読む

WordPressにテーブルを追加する方法

自作テーブルの追加からデータ取得まで!WordPressでデータをDBに保持して使う方法

WordPressでWebサイトを作ったとき、何かしらのデータをデータベース上に保持しておき必要

記事を読む

post-lists-view-custom

『Post Lists View Custom』で投稿一覧・固定ページ一覧の表示項目をカンタンON/OFF

投稿一覧・固定ページ一覧の表示項目を変えられるプラグイン『Post Lists View Cus

記事を読む

Duplicated Post

『Duplicate Post』で投稿ページ・固定ページをカンタン複製

WordPressの投稿ページや固定ページを複製できるプラグイン『Duplicate Post』

記事を読む

WordPressの子テーマで画像が表示されないときはstylesheet_directoryを使っているか確認する

WordPressの子テーマで画像が表示されないときはstylesheet_directoryを使っているか確認する

先日とあるお客様のWordPressサイトで「画像が表示されない」と相談を受けました。 Wor

記事を読む

brewでmacのOpenSSLをバージョンアップ

macでローカル環境のopensslをバージョンアップする手順 〜 brewで更新→rbenvでrubyを再インストール 〜

先日自社の運営サイトのSSL証明書の更新作業をしたのですが、ローカル環境として使っているmacで

記事を読む

Intuitive Custom Post Order

ドラッグ&ドロップだけ!『Intuitive Custom Post Order』は投稿一覧のページ並び順をスイスイ変更できるプラグイン

WordPressの投稿一覧の各投稿ページをカンタンに並べ替えできるプラグイン『Intuitiv

記事を読む

Public Post Previewプラグイン

公開前のページを第三者にシェア!『Public Post Preview』は下書きページへの共有リンクを発行できるプラグイン

公開前のページを第三者に確認してもらうのに便利なプラグイン『Public Post Previe

記事を読む

BootstrapでWordPressサイトをレスポンシブデザイン化

【やって覚える】BootstrapでWordPressサイトをレスポンシブデザイン化する方法

  先日Googleから「4/21以降、サイトのスマホ対応有無を検索結果の順位に反映

記事を読む

DashboardNotePadプラグイン

付箋紙のようにメモ書きできる!『Dashboard Notepad』はWordPressのダッシュボードにメモを残せるプラグイン

WordPressで管理画面のダッシュボードにメモを残せるようになるプラグイン『Dashboar

記事を読む

PR

コメントを残す

PR

【Git】一つ前のcommitに戻す/他のブランチのcommitを取り込む

久しぶりにRailsでプログラムを書いている関係で、これまた久しぶりに

WordPressの子テーマで画像が表示されないときはstylesheet_directoryを使っているか確認する
WordPressの子テーマで画像が表示されないときはstylesheet_directoryを使っているか確認する

先日とあるお客様のWordPressサイトで「画像が表示されない」

おすすめGoogle拡張リスト
【保存版】情報収集を快適に!Chromeに入れておきたいオススメ拡張(エクステンション)8個

私はChromeをメインブラウザとして使っていますが、その理由のひとつ

Rubyで小数点第2位以下を切り捨てる方法

Rubyには標準で便利なメソッドがたくさん用意されています。数値の取り

BootstrapでWordPressサイトをレスポンシブデザイン化
【やって覚える】BootstrapでWordPressサイトをレスポンシブデザイン化する方法

  先日Googleから「4/21以降、サイトのスマホ

→もっと見る

  • feedlyでフォロー RSS登録ボタン
  • 株式会社YUKARIでは、ホームページリニューアルをメインにWeb制作事業を行っています。既存サイトへのWordPress導入・レスポンシブデザイン化からSEO強化まで何でもご相談ください。 ホームページリニューアルをお考えの方からのお問い合わせをお待ちしております。
PAGE TOP ↑