gpt4 book ai didi

git - cherry-pick 工作后 git 如何 merge ?

转载 作者:IT王子 更新时间:2023-10-29 01:16:43 25 4
gpt4 key购买 nike

假设我们有一个 master 分支。

然后我们创建一个newbranch

git checkout -b newbranch

并对 newbranch 进行两个新提交:commit1commit2

然后我们切换到 master 并制作 cherry-pick

git checkout master
git cherry-pick hash_of_commit1

查看 gitk,我们发现 commit1 及其精心挑选的版本具有不同的哈希值,因此从技术上讲,它们是两个不同的提交。

最后我们将 newbranch merge 到 master 中:

git merge newbranch

并看到这两个具有不同哈希值的提交被毫无问题地 merge ,尽管它们暗示相同的更改应该应用两次,因此其中一个应该失败。

git 是否真的在 merge 时对提交的内容进行了智能分析,并决定更改不应应用两次,或者这些提交在内部标记为链接在一起?

最佳答案

简答

别担心,Git 会处理它。

长答案

不同于例如SVN1,Git 不以增量格式存储提交,而是基于快照2,3。虽然 SVN 会天真地尝试将每个 merge 的提交作为补丁应用(并且由于您描述的确切原因而失败),但 Git 通常能够处理这种情况。

merge 时,Git 会尝试将两个 HEAD 提交的快照组合成一个新的快照。如果代码或文件的一部分在两个快照中相同(即因为提交已经被精心挑选),Git 将不会触及它。

来源

1 Skip-Deltas in Subversion
2 Git Basics
3 The Git object model

关于git - cherry-pick 工作后 git 如何 merge ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14486122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com