基特选择不工作

我试图从 master 中挑选一个提交,并将其放到当前的生产分支中。然而,当我执行 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'

注意: 我尝试过重置和重置——硬 HEAD ^ ,但似乎都没有改变任何东西。

我不明白为什么这对我不管用。

任何关于如何解决这个问题的见解、建议或想法都会很有帮助 ~ !

110927 次浏览

Git 将初选解析为 no-op ——该提交引入的所有更改都是由当前分支上的某个提交引入的。(至少 Git 是这么想的。)验证您正在挑选的提交是否已经以某种方式合并,作为一个合适的合并、 rebase/初选或者零碎的补丁。(使用 git show <commit-id>查看差异。)

在我的案例中,这快把我逼疯了,因为很明显,如果 没有合并到我当前的分支中,我想要挑选的特定提交就会很明显。

原来有人在一周前,让 已经的人选择了犯罪。改变,但不是特定的 SHA,已经在我当前的分支中,我没有注意到它们。

检查您试图选择的文件。如果他们已经有了更改,那么提交的一个版本已经以另一种方式被选中或添加。因此,没有必要再次挑选它。

还要注意的是,将一个空文件(例如 .gitkeep)添加到树中会被初始化认为是一个空提交。

因此,这里还有另一个令人困惑的情况,可能会出现这种情况: 我有以下几点:

git log screenshot

我试图选择9a7b12e,显然没有什么——它甚至试图在 git 日志输出中的那一行告诉我,4497428是我真正想要的。(我所做的只是查找提交消息,并抓取我看到的第一个包含提交消息的 hash)。不管怎样,我只是想让大家知道还有另一种方法可以让你选择不执行任务。

我也遇到过和你一样的问题,也许这会对你有所帮助,所以确保你没有脱离 HEAD,然后试着挑选它们,这意味着首先要做的是:

git checkout master

然后使用:

git cherry-pick <your-commit-hash>

在这个主题上我有一个不同的变化,我从来没有找到一个正确的解决方案。

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

此操作因空提交错误而失败。我确认了同样的文件还在分支上。在这种情况下,我只是重新提交了分支,但这令人沮丧。

Git 2.27.0 on centos8