オンラインで検索しました。コミット後にformat-patchを使用できることは知っていますが、私の状況は少し異なります。
SVNの「dpk」に似たパッチを作成したいので、コードレビュー用に送信できますが、まだコミットしたくありません。
Gitでこれを達成するにはどうすればよいですか?
Gitでのコミットは安価で完全にローカルな操作であるため、どこにもプッシュしない限り、コミットを回避する理由はありません。
新しいローカルブランチを作成し、そこで変更をコミットするだけです。ブランチが不要になった場合は、後でブランチをいつでも削除できます。または、ブランチを保持し、実行中の作業に使用して、準備ができたらマスターブランチにマージ(またはリベース)できます。これは、Gitで作業するときに使用するのに適したワークフローです。
$ git checkout -b feature-foo # create and switch to new branch feature-foo
$ git commit
# do whatever you need to do
$ git checkout master # switch back to the master branch
$ git merge feature-foo # merge your change into master (optional)
$ git branch -d feature-foo # delete the branch
他の人がすでにgit規約に準拠した答えを出していた場合、OPの質問「コミットせずにパッチを作成する」もこの方法で解決できます。
git diff > my_patch.txt
後でコミットすることなく、このパッチを後で適用できます:
git apply my_patch.txt
ただし、ローカルで作業している場合は、git checkout another_branch -m
は、パッチを適用せずに、現在のすべてのコミット解除の変更をanother_branchにもたらすのに十分です。
最後にコミットせずにパッチを生成する一般的な手順
を使用してローカルの変更をコミットします
git commit -a -m "specific message"
注:このコミットをプッシュしないでください。
パッチを生成する
git format-patch -s -n -1 HEAD
0001-.patchを生成します
ローカルコミットを元に戻す
git reset --soft HEAD~1
コミットを削除するが作業は続ける
git reset --hard HEAD~1
あなたの仕事でコミットを削除するには
@hammarが言ったように、コミットは安いので、git reset
など.
隠してから実行することもできます:
git stash show -p
Gitのローカルリポジトリへのコミットは「バインド」ではありません。変更をコミットし、パッチを作成してから、ブランチで以前のコミットにソフトリセットを行うことができます。これは、コミットが発生しなかったようなものです。
そうは言っても、パッチを作成した後にブランチをリセットする必要はありません。リポジトリにコミットを残したまま、コードのレビューが完了するまでプッシュを避けることができます。元のコミットに戻って変更を加える必要がある場合は、その時点でオプションがあります。
そして、hammarが示唆するようにコミット用のブランチを作成すると、プッシュする前にメインブランチで迷惑なリベースなどを行うことなく、戻って後で変更することがさらに簡単になります。