GIT是否根据日期时间进行合并?

时间:2015-08-31 03:09:02

标签: git merge

我想了解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

3 个答案:

答案 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 IC 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那样得到历史