143

マスターからコミットを選択して、現在の本番ブランチに入れようとしています。ただし、を実行するgit cherry-pick <SHA-hash>と、次のメッセージが表示されます。

# On branch prod_20110801
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#   site/test-result/
 nothing added to commit but untracked files present (use "git add" to track)
 The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:

    git commit --allow-empty

Otherwise, please use 'git reset'

注:リセットとリセット--hard HEAD ^を実行しようとしましたが、どちらも何も変更されていないようです。

なぜこれがうまくいかないのか混乱しています。

これを解決する方法についての洞察、アドバイス、またはアイデアは役に立ちます〜!

4

7 に答える 7

173

Gitは、チェリーピックをノーオペレーションとして解決しています。そのコミットによって導入されたすべての変更は、現在のブランチの一部のコミットによって導入されています。(または、とにかく、それはGitが考えていることです。)適切なマージ、リベース/チェリーピック、または断片的なパッチのいずれかとして、チェリーピッキングしているコミットがまだ何らかの形でマージされていないことを確認します。(git show <commit-id>差分を確認するために使用します。)

于 2011-08-15T23:36:05.503 に答える
16

私の場合、チェリーピックしたい特定のコミットが現在のブランチにマージされていないことは明らかだったので、これは私を苛立たせていました。

誰かが1週間前にすでにコミットを選んだことが判明しました。変更は、特定のSHAではなく、すでに私の現在のブランチにあり、私はそれらに気づいていませんでした。

チェリーピックしようとしているファイルを確認してください。すでに変更が加えられている場合は、コミットのバージョンがすでに別の方法で選択または追加されています。したがって、再度チェリーピックする必要はありません。

于 2015-04-14T21:49:24.880 に答える
6

.gitkeepまた、ツリーに空のファイル(eg)を追加すると、cherry-pickによって空のコミットと見なされることに注意してください。

于 2016-05-09T12:38:14.353 に答える
3

それで、これが起こり得るさらに別の紛らわしい状況があります:私は以下を持っていました:

gitログのスクリーンショット

私は明らかに何もない9a7b12eをチェリーピックしようとしていました-それは4497428が私が本当に欲しかったものであるとgitログ出力のその行で私に伝えようとしました。(私がしたことは、コミットメッセージを探して、それが含まれているのを最初に見たハッシュを取得することでした)。とにかく、あなたがだまされてノーオプをチェリーピックしようとする別の方法があることを人々に知らせたいだけです。

于 2017-05-21T04:17:00.373 に答える
1

このエラーが発生するもう1つの考えられる理由は、gitcherry-pickに渡されるコミットのシーケンスです。最初のコミットを開始コミットとして選択してから、時間内に進む必要があります。

私も同じ問題を抱えていました。私の場合、コミット履歴は次のとおりでした。

   Commit Sequence   976e364---2b162b6---x...etc

私は以下を実行しましたが、質問と同じエラー/問題が発生しました、

git cherry-pick 2b162b6 976e364   //this is wrong commit sequence 

上記の場合の根本的な問題は、コミットシーケンスです。

git cherry-pick 976e364 2b162b6   //this is correct commit sequence

gitの公式ドキュメントでは、次のように述べています。

注:コミットシーケンスは確かに重要です。

# Find the range of commits you wish to re-add to your branch.
# then use cherry-pick to add them back to the branch
git cherry-pick start..end

# If you wish to include the start commit as well add the ^
# This will result in a cherry-pick of the start commit included as well 
git cherry-pick start^..end
于 2021-05-05T03:07:35.480 に答える
0

私はあなたと同じ問題を抱えていました、多分これはあなたを助けるでしょう、それであなたがHEADから切り離されていないことを確認してからそれらをチェリーピックしようとします、それは最初に行うことを意味します:

git checkout master

次に使用します:

git cherry-pick <your-commit-hash>
于 2020-11-21T14:52:36.147 に答える
0

このテーマには別のバリエーションがあり、正しい解決策は見つかりませんでした。

git checkout master
git rm .travis.yml
git commit -m "Travis build no longer needed"
git checkout <mybranch>
git cherry-pick <lastcommit>

これは空のコミットエラーで失敗しました。そして、同じファイルがブランチにまだ存在していることを確認しました。この場合、ブランチでコミットをやり直しただけですが、イライラします。

centos8のgit2.27.0

于 2021-07-21T22:43:31.897 に答える