はじめに
会社ではトランクベース開発をしているのですが、どうしてもGitにPushしてしまうと問題が起きてしまうコードなどが存在します。そこでdiffとしてpatch
を出力してもらいapplyすることで対応しています
そんな中でやり方を毎度聞いてしまうので個人的にメモとしてまとめます
diffを渡す手順
1. ステータスを確認する
$ git status
ブランチ main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
watanabejin@watanabejin-ThinkPad-P1-Gen-5 ~/workspace/git_diff_handson (main)
$ git add .
watanabejin@watanabejin-ThinkPad-P1-Gen-5 ~/workspace/git_diff_handson (main)
$ git status
ブランチ main
Your branch is up to date with 'origin/main'.
コミット予定の変更点:
(use "git restore --staged <file>..." to unstage)
modified: test.md
watanabejin@watanabejin-ThinkPad-P1-Gen-5 ~/workspace/git_diff_handson (main)
$ git status
ブランチ main
Your branch is up to date with 'origin/main'.
コミット予定の変更点:
(use "git restore --staged <file>..." to unstage)
modified: test.md
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: test2.md
現在の状態は
test.md
がcommit
test2.md
がadd
されている状態です。
ここですべてのdiffを出すためには、test.md
をコミットからおろして、add
した状態にする必要があります。
2. commitをやめる
$ git restore --staged test.md
$ git status
ブランチ main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: test.md
modified: test2.md
no changes added to commit (use "git add" and/or "git commit -a")
git restore --staged <file名>
でコミットからおろすことができました
3. すべてaddされているか確認
diff
をだすには差分を出したいファイルがすべてadd
されていないといけないのでaddされているか確認します
4. diffを出力
$ git diff --cached > file_name.patch
$ xdg-open .
xdf-open
することでpatchを共有しやすくなります (現在のディレクトリが開きます)
おわりに
備忘録程度にまとめてみました。
聞く前に自分で参考にしたいとおもいます