我想了解GIT合并是如何发生的。
大师&的功能
A--B--C --G--H--I
--D--E--F
以下是所做的更改和更改日期。
G(大师) - 8月 - 8日 H(硕士) - 8月10日 我(大师) - 8月 - 15日
D(特写) - 8月 - 9日 E(专题) - 8月11日 F(特写) - 8月 - 12日
那么,现在如果我将master分支合并到功能中,历史记录是如何出现的?它会根据日期更改合并并显示如下吗?
功能分支
A--B--C--G--D--H--E--F
答案 0 :(得分:1)
git进行合并的方式是,如果你愿意,它会创建你当前分支和你想要合并的分支之间的差异补丁。然后使用commit -
将该补丁作为一个整体应用于您的分支Merge "Source Branch" into "Target Branch"
这基本上是您唯一的新提交。如果您想还原--D--E--F
,那么您不会单独还原它们,而是还原此大合并提交。
至于时间戳,是git
现在也会在两个分支中为你自己合并提交,你可以自己回复。
想象一下这样的事情,
Branch 1: A - B - C - - G - H - I
Branch 2: D - E - F
在Branch 1
中合并这些内容会给你 -
Branch 1: A - B - C - D - E - F - G - H - I - J (Here, J = D + E + F)
另一方面,rebase会给你:
Branch 1: A - B - C - G - H - I - J - D* - E* - F* (Here, D* = D's changes)
答案 1 :(得分:1)
如果您在分支机构master
上并执行git merge feature
,您的历史记录将从此更改:
A--B--C---G--H--I (master)
\
\-D--E--F (feature)
到此:
A--B--C---G--H--I---J (master)
\ /
\-D--E--F-/ (feature)
git
将比较两个差异C vs I
和C vs F
,并尝试构建一个新的提交,它结合了这两个差异的变化。
如果git
上的某些更改与I
中的某些更改重叠,则F
mays会要求您手动解决冲突。
git
将 不 修改任何现有提交,以便在共享仓库中,其他开发人员可以使用 回购的副本没有搞砸。
git merge
未考虑提交日期;它只是查看提交的继承(例如,G
在图表中C
之后的事实)。
还有另一个命令git rebase
,它将更改现有提交的结构,如果他们想让本地副本与远程服务器保持同步,可能会强制其他开发人员做额外的工作。
git rebase
是一个很有用的命令,但通常建议只在本地使用它,在之前共享一些修改(例如:仅在尚未进行的修改时使用它) {1}} ED)。
答案 2 :(得分:0)
如果将master分支与功能合并,它将使用其日志进行新提交,例如“将分支主分区合并到功能”。
你不会像A-B-C-G-D-H-E-F那样得到历史