1. ホーム
  2. ギット

[解決済み】特定のファイルへの変更のみをgit-cherry-pickする方法は?

2022-03-23 20:49:56

質問

複数のファイルへの変更を含む特定のコミットで変更されたファイルの一部だけを Git ブランチにマージしたい場合、どのようにすればよいのでしょうか。

というGitコミットがあったとします。 stuff には、ファイル A , B , C および D のみをマージしたいのですが stuff の変更点をファイル AB . の仕事のようですね。 git cherry-pick しかし cherry-pick は、ファイルのサブセットではなく、コミット全体をマージする方法しか知らないのです。

どのように解決するのですか?

私なら cherry-pick -n ( --no-commit を使用すると、コミットする前に結果を検査(および修正)することができます。

git cherry-pick -n <commit>

# unstage modifications you don't want to keep, and remove the
# modifications from the work tree as well.
# this does work recursively!
git checkout HEAD <path>

# commit; the message will have been stored for you by cherry-pick
git commit

もし変更の大部分が不要なものであれば、個々のパスをチェックする(中間ステップ)代わりに、すべてをリセットして元に戻し、必要なものを追加することができます。

# unstage everything
git reset HEAD

# stage the modifications you do want
git add <path>

# make the work tree match the index
# (do this from the top level of the repo)
git checkout .