我做了以下事情:
git fetch upstream
git cherry-pick xyz
选择的提交已被干净地应用,只是在其中一个文件中它具有与我在之前的提交中所做的完全相同的更改,因此不会重新应用这些更改。
代码方面的一切都很好,但我想在我的历史中拥有提交哈希。在我的历史中,它以一个新名字出现。这甚至可能吗?就我正在阅读 git merge “我们的” 策略而言,它似乎通常是可能的,但如何为单个提交做到这一点?
我想要这个,以便以后更容易识别提交所做upstream
的事情我没有。目前在 githubnetwork
视图中,我认为精心挑选的提交是我没有的独立的东西。
附加信息:@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 已应用于我的 fork 存储库。但是在合并后它表明它在那里,尽管我的文件中没有任何变化。
这使我认为确实可以声明一个分支中包含的许多提交,尽管它们的应用与上游应用的完全不同。
update2:我看到了如何在 Git 中合并特定提交及其最佳答案的问题。因此,也将不胜感激解释为什么它不可能或未实施。