Git:一時的な差分をファイルに出力してみよう!

はじめに

こんにちは!中途入社のなーがです。まだ入社して4日目ですが、せっかくなので入社早々ブログを書いてみようと思います。
初めての記事はGitについて書こうと思うのですが、Gitに関する内容は多くの記事で書かれていると思いますので個人的な備忘録として書きます。

 

Webアプリ等の開発を行う際に、ソースコードの管理ツールとしてGitを使用されていると思います。
現在変更している差分を一時的に保存しておきたいという状況が発生した場合に、以下のコマンドを使用されている場合がほとんどじゃないでしょうか。
stashについては、先日龍ちゃんが書いたこちらの記事も参考にしてみてください!
git stash
または
stashに名前を付けたい時
git stash save "XXXXX機能 仮実装"

patchファイルの作成

stashコマンドは便利ですが、開発を進めていると以下のような場合に出くわすことがあります。
  • この差分をチームメンバーに共有したい!
  • PCを変更したいからstashを他のPCにも反映させたい!  
等々…
こんな時にはdiffコマンドを応用して、差分をpatchファイルに出力できます。
git diff > XXXXXXXX機能_仮実装.patch

追記:2023/09/07

====================================================================================

または、stashを指定して差分をpatchファイルに出力できます。
git stash show stash@{3} > XXXXXXXX機能_仮実装.patch

上記のコマンドを実行してstashを指定した差分のpatchファイルを作成すると、各ファイルに変更行がどれだけあるかということしか分かりません。

 index.html | 29 ++++++++++++++++++-----------
 src/App.css | 7 +++++++
 src/App.tsx | 24 ++++++++++++++++++++++++
 3 files changed, 49 insertions(+), 11 deletions(-)

stashを指定して差分をpatchファイルに出力したい場合は、以下のコマンドを実行します。

そのままでは差分が逆に表示されてしまうので、オプション:-Rを指定することで差分表示の方向を逆にして通常の差分と同じように表示しています。

$ git diff -R stash@{3} > XXXXXXXX機能_仮実装.patch

====================================================================================

以下は、上記のコマンドで作成されたpatchファイルの中身です。

patchファイルの反映

作成したpatchファイルを反映したい場合は、以下のコマンドで反映できます。
git apply XXXXXXXX機能_仮実装.patch
以下のコマンドを使用することで、パッチをきちんと適用できるかどうかを事前に確かめることができます。
下記のように何も出力されなければ、そのパッチはうまく適用できます。
git apply --check XXXXXXXX機能_仮実装.patch
patchファイルを適用したい環境とpatchファイルで同じファイルの差分があった場合などで適用が出来ない場合は以下のようなエラーが表示されます。
チェックに失敗した場合にゼロ以外の値を返して終了します。スクリプト内でチェックしたい場合などにはこの返り値を使用します。
git apply --check XXXXXXXX機能_仮実装_err.patch
error: patch failed: ticgit.gemspec:1
error: ticgit.gemspec: patch does not apply

最後に

こちらの記事を書くために、Gitの公式ドキュメントを確認したところ、diffコマンドだけでなく、format-patchコマンドを使用してもpatchファイルが作成できることが分かりました。(こっちの方がいいらしい?)  
知らないうちに新しくて便利な機能がどんどん追加されるので、公式ドキュメントを確認する大切さを再認識しました。  
次回はformat-patchについて書こうと思います!
以降に参考にしたサイトを張っておきます。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です