こんにちはフロントエンドエンジニアのまさにょんです!
今回は、Gitでパッチファイルを作成する方法について解説していきます。
Gitでパッチファイルを作成する方法
Gitでパッチファイルを作成する方法には、事前の準備をした上でgit diff
で差分を取っていきます。
前提条件・事前準備
まず前提条件・事前準備として、次の2つが必要になります。
- 初期プロジェクト: 改造する前のプロジェクト(ディレクトリ)
- 完成したプロジェクト: 改造を終えて、Patchファイルを作成したいプロジェクト(ディレクトリ)
git diff
で差分を抽出して、パッチファイルを作成するために、初期プロジェクトと完成したプロジェクトを用意します。
Git でパッチファイルを作成する
gitで、パッチファイルを作成する方法には、先述の2つのディレクトリを用意した上で、
それぞれの変更のログ(commit)を取り、最後に次のコマンドを実行します。
細かい、実践のフローは後述します。
git diff before-commit after-commit > filename.patch
実践ハンズオン
それでは、実際にGit でパッチファイルを作成する実践のフローを見ていきましょう。
箇条書きすると、次のようなフローになります。
- パッチファイルを作成するために初回と完成後の2つのプロジェクトフォルダを準備する
- パッチファイルを作成するためのディレクトリを作成: 「Patch-Generate-Dir」という名前で作成
- 初期プロジェクトを Patch-Generate-Dir に投入する!
- git init する!
- git add & commit して、初期プロジェクトの情報を Git に反映させる!
- 完成したプロジェクトを投入して、初期プロジェクトを上書きする: プロジェクト名(ディレクトリ名)は一緒
- git add & commit して、変更を Git に反映させる!
- 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!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!