git 合并并记录消息
git merging and log message
我仍在学习 git。在合并之前,git 日志告诉我类似 ....
commit 9588d21a81d0f8a977c8d0651eee9f56eaf4186d
Merge: 0367c67 fbd02fc
Author: me <me@here.there.com>
Date: Thu Nov 17 17:09:25 2016 -0600
On branch branch1
...
我想合并branch1和branch0,所以我发出了合并命令:
> git checkout branch0
> git merge branch1
令我惊讶的是,一切顺利。输出看起来像:
Updating e57618a..9588d21
Fast-forward
src/file1.c | 235 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
src/blah.h | 15 +++-
src/file2.c | 2 -
src/main.c | 91 +++++++++++++++++------
...
11 files changed, 811 insertions(+), 100 deletions(-) ...
没有冲突或任何 AFAICT。但是,当我发出 git 日志命令时,没有迹象表明已发生此合并,并且 branch1 中的旧提交仍在日志顶部:
commit 9588d21a81d0f8a977c8d0651eee9f56eaf4186d
Merge: 0367c67 fbd02fc
Author: me <me@here.there.com>
Date: Thu Nov 17 17:09:25 2016 -0600
On branch branch1
...
这是我应该期望的行为吗?我至少期望该分支现在显示为 branch0。如果我尝试删除 branch1,此时会发生什么情况?
根据您的评论,git 似乎执行了一个简单的快进合并。基本上,您在 branch1 中进行了一次或多次提交,然后将该分支合并回 branch0,因此 git 只是将 branch0 的指针移动到指向 branch1 的最后一次提交。
这是快进合并。有些人不喜欢那样并希望看到明确的合并,在这种情况下,您需要在发出合并命令时使用 --no-ff 标志。
来自 git book 的下图可能有助于说明这一点:
当 git 执行快进合并时,分支 master(或您的情况下的 branch0)简单地移动到指向提交 C3。没有创建额外的合并提交。
如果删除 branch1,则不会丢失任何内容,因为 branch0 仍指向来自 branch1 的最新提交。您可以通过发出以下命令(在 branch0 上)来验证它。
git branch --merged
它应该显示 branch1,您可以删除它:
git branch -d branch1
Git 如果您尝试删除未合并的分支,则会发出警告,并且您必须使用 -D
强制删除
我仍在学习 git。在合并之前,git 日志告诉我类似 ....
commit 9588d21a81d0f8a977c8d0651eee9f56eaf4186d
Merge: 0367c67 fbd02fc
Author: me <me@here.there.com>
Date: Thu Nov 17 17:09:25 2016 -0600
On branch branch1
...
我想合并branch1和branch0,所以我发出了合并命令:
> git checkout branch0
> git merge branch1
令我惊讶的是,一切顺利。输出看起来像:
Updating e57618a..9588d21
Fast-forward
src/file1.c | 235 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
src/blah.h | 15 +++-
src/file2.c | 2 -
src/main.c | 91 +++++++++++++++++------
...
11 files changed, 811 insertions(+), 100 deletions(-) ...
没有冲突或任何 AFAICT。但是,当我发出 git 日志命令时,没有迹象表明已发生此合并,并且 branch1 中的旧提交仍在日志顶部:
commit 9588d21a81d0f8a977c8d0651eee9f56eaf4186d
Merge: 0367c67 fbd02fc
Author: me <me@here.there.com>
Date: Thu Nov 17 17:09:25 2016 -0600
On branch branch1
...
这是我应该期望的行为吗?我至少期望该分支现在显示为 branch0。如果我尝试删除 branch1,此时会发生什么情况?
根据您的评论,git 似乎执行了一个简单的快进合并。基本上,您在 branch1 中进行了一次或多次提交,然后将该分支合并回 branch0,因此 git 只是将 branch0 的指针移动到指向 branch1 的最后一次提交。
这是快进合并。有些人不喜欢那样并希望看到明确的合并,在这种情况下,您需要在发出合并命令时使用 --no-ff 标志。
来自 git book 的下图可能有助于说明这一点:
当 git 执行快进合并时,分支 master(或您的情况下的 branch0)简单地移动到指向提交 C3。没有创建额外的合并提交。
如果删除 branch1,则不会丢失任何内容,因为 branch0 仍指向来自 branch1 的最新提交。您可以通过发出以下命令(在 branch0 上)来验证它。
git branch --merged
它应该显示 branch1,您可以删除它:
git branch -d branch1
Git 如果您尝试删除未合并的分支,则会发出警告,并且您必须使用 -D
强制删除