Gitでパッチファイルを作成する方法 (git diff で差分を抽出)

Git-diff

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、Gitでパッチファイルを作成する方法について解説していきます。

Gitでパッチファイルを作成する方法

Gitでパッチファイルを作成する方法には、事前の準備をした上でgit diff で差分を取っていきます。

前提条件・事前準備

まず前提条件・事前準備として、次の2つが必要になります。

  1. 初期プロジェクト: 改造する前のプロジェクト(ディレクトリ)
  2. 完成したプロジェクト: 改造を終えて、Patchファイルを作成したいプロジェクト(ディレクトリ)

git diff で差分を抽出して、パッチファイルを作成するために、初期プロジェクトと完成したプロジェクトを用意します。

Git でパッチファイルを作成する

gitで、パッチファイルを作成する方法には、先述の2つのディレクトリを用意した上で、

それぞれの変更のログ(commit)を取り、最後に次のコマンドを実行します。

細かい、実践のフローは後述します。

git diff before-commit after-commit > filename.patch

実践ハンズオン

それでは、実際にGit でパッチファイルを作成する実践のフローを見ていきましょう。

箇条書きすると、次のようなフローになります。

  1. パッチファイルを作成するために初回と完成後の2つのプロジェクトフォルダを準備する
  2. パッチファイルを作成するためのディレクトリを作成: 「Patch-Generate-Dir」という名前で作成
  3. 初期プロジェクトを Patch-Generate-Dir に投入する!
  4. git init する!
  5. git add & commit して、初期プロジェクトの情報を Git に反映させる!
  6. 完成したプロジェクトを投入して、初期プロジェクトを上書きする: プロジェクト名(ディレクトリ名)は一緒
  7. git add & commit して、変更を Git に反映させる!
  8. git diff で 初期プロジェクト と 完成したプロジェクト の差分を抽出する!

cd Desktop

mkdir Patch-Generate-Dir

cd Patch-Generate-Dir

# 初期プロジェクトを Patch-Generate-Dir に投入する!

git init

git add -A

git commit -m "初期プロジェクトを投入"

git log

    commit 659b5574127bad6171f9ad2ac54b73ce1d08bf8c (HEAD -> main)
    Author: robotama <robotama@gunma.co.jp>
    Date:   Fri Dec 2 17:52:19 2022 +0900

        初期プロジェクトを投入


# 完成したプロジェクトを投入して、初期プロジェクトを上書きする: プロジェクト名(ディレクトリ名)は一緒


git add -A

git commit -m "完成したプロジェクトを投入"


Patch-Generate-Dir> git log
        
    commit 08dd6de5a31b034e4b5e8d4c58f54ee3ca06f67f (HEAD -> main)
    Author: robotama <robotama@gunma.co.jp>
    Date:   Fri Dec 2 18:01:55 2022 +0900

        完成したプロジェクトを投入

    commit 659b5574127bad6171f9ad2ac54b73ce1d08bf8c
    Author: robotama <robotama@gunma.co.jp>
    Date:   Fri Dec 2 17:52:19 2022 +0900

        初期プロジェクトを投入


git diff 659b5574127bad6171f9ad2ac54b73ce1d08bf8c 08dd6de5a31b034e4b5e8d4c58f54ee3ca06f67f > laravel-api.patch

# [ git diff 構文 ]
# git diff before-commit after-commit > filename.patch

Git・GitHub書籍

プログラミング学習・エンジニア転職関連の情報

自宅で現役エンジニアから学べる『TechAcademy』 (エンジニア転職保証)

『GEEK JOBキャンプ』スピード転職コース(無料)

【IT道場】入校時0円! 就職目的プログラミングスクール

エンジニア転職なら100%「自社開発」求人に強い【クラウドリンク】

『techgym』 (Python特化・無料)

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

最近の投稿