我做了以下事情:
git fetch upstream
git cherry-pick xyz
选定的提交已经被成功地应用,除了在其中一个文件中,它与我之前在另一个提交中已经完成的更改完全相同,因此这些更改没有重新应用。
就代码方面而言,一切都很好,但我想在我的历史记录中有提交哈希值。在我的历史记录中,它显示为一个新名称。这是可能的吗?据我所阅读的git合并“ours”策略似乎通常是可能的,但如何仅针对单个提交执行此操作?
我这样做是为了以后更容易确定upstream拥有的提交与我没有的提交。目前在github的network视图中,我看到挑选的提交是一个独立的东西,我没有。
附加信息: CharlesB说的对我有意义。但是merge -s ours如何实现这种魔法呢?在这种情况下,对于我来说,cherry-pick并不重要。因为我想要采取的更改只是一个,位于upstream/master的顶端。所以只是为了尝试一下,我执行了:git merge -s ours upstream/master 现在执行git log --graph --pretty=oneline --abbrev-commit,我看到了这样的东西:
* 9e8108b Merge remote-tracking branch 'mgencur/master' for better github netw
|\
| * aa7117d Fix displaying watchers/watching for incorrect user // this commit magically appeared after merge -s ours
* | ff05f8c Fix displaying watchers/watching for incorrect user // this is commit from cherry-pick of aa7117d
* | b7ca8ec older commit in my fork
* | <more commits in my fork>
|/
* 94d6870 Fix obtaining available users for testing purposes
* <older commits of upstream/master>
在执行git merge -s ours
之前,相同的命令看起来像这样:
* ff05f8c Fix displaying watchers/watching for incorrect user // this is commit from cherry-pick of aa7117d
* b7ca8ec older commit in my fork
* <more commits in my fork>
* 94d6870 Fix obtaining available users for testing purposes
* <older commits of upstream/master>
从选择了提交aa7117d之后可以看出,在我的分支仓库中并没有显示aa7117d已经被应用。但是在合并之后,它被标记为已经被合并,尽管我的文件没有任何改变。
这让我想到,确实有可能声明一些提交包含在一个分支中,尽管它们没有像上游那样被精确地应用。
更新2:我看到了问题How to merge a specific commit in Git和它最佳的答案。因此,也希望能解释为什么不可能或者未实现。