当我从master
分支合并一个分支(wxc
)时:
$ git merge wxc
Merge made by the 'recursive' strategy.
Q2/__init__.py | 3 +
Q2/common/GLOBAL_CONST.py | 8 +--
Q2/urls.py | 7 ---
.../admin_productconfig_physicalserver/api/paginations.py" | 1 +
.../admin_productconfig_physicalserver/api/serializers.py" | 22 ++++++-
.../admin_productconfig_physicalserver/api/switch_cmd_util.py" | 31 +---------
.../admin_productconfig_physicalserver/api/urls.py" | 6 ++
.../admin_productconfig_physicalserver/api/views.py" | 133 +++++++++++++++++++++++++++++++++++++++-
.../admin_productconfig_physicalserver/migrations/0091_mg.py" | 34 ++++++++++
.../admin_productconfig_physicalserver/migrations/0092_mgnumber.py" | 25 ++++++++
.../migrations/0093_auto_20190902_1249.py" | 19 ++++++
.../migrations/0094_merge_20190906_0822.py" | 16 +++++
.../admin_productconfig_physicalserver/models.py" | 61 ++++++++++++++++--
.../admin_usermanage/api/serializers.py" | 2 +-
.../admin_usermanage/api/views.py" | 4 +-
15 files changed, 318 insertions(+), 54 deletions(-)
create mode 100644 "\346\227\227\344\272\221\347\256\241\347\220\206\345\221\230\345\220\216\345\217\260/\344\272\247\345\223\201\351\205\215\347\275\256/qiyun_admin_productconfig_physicalserver/migrations/0091_mg.py"
create mode 100644 "\346\227\227\344\272\221\347\256\241\347\220\206\345\221\230\345\220\216\345\217\260/\344\272\247\345\223\201\351\205\215\347\275\256/qiyun_admin_productconfig_physicalserver/migrations/0092_mgnumber.py"
create mode 100644 "\346\227\227\344\272\221\347\256\241\347\220\206\345\221\230\345\220\216\345\217\260/\344\272\247\345\223\201\351\205\215\347\275\256/qiyun_admin_productconfig_physicalserver/migrations/0093_auto_20190902_1249.py"
create mode 100644 "\346\227\227\344\272\221\347\256\241\347\220\206\345\221\230\345\220\216\345\217\260/\344\272\247\345\223\201\351\205\215\347\275\256/qiyun_admin_productconfig_physicalserver/migrations/0094_merge_20190906_0822.py"
您会看到文件更改太多,例如Q2/__init__.py
,Q2/common/GLOBAL_CONST.py
,Q2/urls.py
等:
然后,我查看我的master
分公司最近的两个日志:
$ git log -n2
commit b63c3856677916f8008b338c139bd3b00c90593d (HEAD -> master)
Merge: 6b59b80 3e85a8d
Author: dale <dale@gmail.com>
Date: Wed Sep 18 11:28:25 2019 +0800
Merge branch 'wxc 20190917-wxc'
commit 3e85a8dfd0270f6fb0f3786b8761038df322890f (remote_repo/wxc, wxc)
Author: dale <dale@gmail.com>
Date: Tue Sep 17 16:04:54 2019 +0800
'2019-09-17-wxc-01'
我想比较最近两次提交的区别:
dale-MBP:Q2 ldl$ git diff 3e85a8df b63c3856
diff --git "a/\346\227\227\344\272\221\347\256\241\347\220\206\345\221\230\345\220\216\345\217\260/\344\272\247\345\223\201\351\205\215\347\275\256/admin_productconfig_physicalserver/api/whmcs/views.py" "b/\346\227\227\344\272\221\347\256\241\347\220\206\345\221\230\345\220\216\345\217\260/\344\272\247\345\223\201\351\205\215\347\275\256/admin_productconfig_physicalserver/api/whmcs/views.py"
index ccc1ba3..9fac902 100644
--- "a/\346\227\227\344\272\221\347\256\241\347\220\206\345\221\230\345\220\216\345\217\260/\344\272\247\345\223\201\351\205\215\347\275\256/admin_productconfig_physicalserver/api/whmcs/views.py"
+++ "b/\346\227\227\344\272\221\347\256\241\347\220\206\345\221\230\345\220\216\345\217\260/\344\272\247\345\223\201\351\205\215\347\275\256/admin_productconfig_physicalserver/api/whmcs/views.py"
@@ -74,8 +74,11 @@ class WHMCSPhysicalServerIPMIManagementAPIView(APIView):
if whmcs_site not in [
"www.44.hk",
+ "44.hk",
"www.44.com",
- "www.44.net"
+ "44.com",
+ "www.44.net",
+ "44.net"
]:
return Response(status=HTTP_400_BAD_REQUEST, data="error")
@@ -100,6 +103,8 @@ class WHMCSPhysicalServerIPMIManagementAPIView(APIView):
physical_server_name = request.data.get('physical_server_name')
action = request.data.get('action')
+ physical_server_name = str(physical_server_name).split("/")[0]
+
if not physical_server_name or not action:
return Response(data="invalid request data", status=HTTP_400_BAD_REQUEST)
您看到仅比较一个文件(admin_productconfig_physicalserver/api/whmcs/views.py
),为什么不比较其他文件?另一个问题是admin_productconfig_physicalserver/api/whmcs/views.py
文件更改列表中不存在merge
:
Q2/__init__.py | 3 +
Q2/common/GLOBAL_CONST.py | 8 +--
Q2/urls.py | 7 ---
.../admin_productconfig_physicalserver/api/paginations.py" | 1 +
.../admin_productconfig_physicalserver/api/serializers.py" | 22 ++++++-
.../admin_productconfig_physicalserver/api/switch_cmd_util.py" | 31 +---------
.../admin_productconfig_physicalserver/api/urls.py" | 6 ++
.../admin_productconfig_physicalserver/api/views.py" | 133 +++++++++++++++++++++++++++++++++++++++-
.../admin_productconfig_physicalserver/migrations/0091_mg.py" | 34 ++++++++++
.../admin_productconfig_physicalserver/migrations/0092_mgnumber.py" | 25 ++++++++
.../migrations/0093_auto_20190902_1249.py" | 19 ++++++
.../migrations/0094_merge_20190906_0822.py" | 16 +++++
.../admin_productconfig_physicalserver/models.py" | 61 ++++++++++++++++--
.../admin_usermanage/api/serializers.py" | 2 +-
.../admin_usermanage/api/views.py" | 4 +-
15 files changed, 318 insertions(+), 54 deletions(-)
create mode 100644 "\346\227\227\344\272\221\347\256\241\347\220\206\345\221\230\345\220\216\345\217\260/\344\272\247\345\223\201\351\205\215\347\275\256/qiyun_admin_productconfig_physicalserver/migrations/0091_mg.py"
create mode 100644 "\346\227\227\344\272\221\347\256\241\347\220\206\345\221\230\345\220\216\345\217\260/\344\272\247\345\223\201\351\205\215\347\275\256/qiyun_admin_productconfig_physicalserver/migrations/0092_mgnumber.py"
create mode 100644 "\346\227\227\344\272\221\347\256\241\347\220\206\345\221\230\345\220\216\345\217\260/\344\272\247\345\223\201\351\205\215\347\275\256/qiyun_admin_productconfig_physicalserver/migrations/0093_auto_20190902_1249.py"
create mode 100644 "\346\227\227\344\272\221\347\256\241\347\220\206\345\221\230\345\220\216\345\217\260/\344\272\247\345\223\201\351\205\215\347\275\256/qiyun_admin_productconfig_physicalserver/migrations/0094_merge_20190906_0822.py"
答案 0 :(得分:2)
运行git diff 3e85a8df b63c3856
时,您并没有查看两个分支之间的合并差异。取而代之的是,您正在查看两个父分支之一中的最后一个更改(碰巧包含最新更改)。
这是因为合并提交(b63c3856
)仅在此处通过捕获两个父提交和一条日志消息来记录合并。来自git-merge
description:
然后,“ git merge topic”将重播对该主题所做的更改 因为它与主节点(即E)分叉,直到当前 将(C)提交到master上,并将结果记录在新的commit中 以及两个父提交的名称以及来自的日志消息 用户描述更改。
要注意的关键是 “重放更改” 。每个分支的所有单独提交都将保留。
在您的git log
输出中,请注意输出中描述合并提交的Merge
字段:
Merge: 6b59b80 3e85a8d
这些是合并之前每个分支的最后两个提交的提交哈希。您可以使用以下命令显示分支之间的差异:
git diff 6b59b80...3e85a8d
git diff [<选项>] <提交> ... <提交> [-] [<路径> ...]
此表单用于查看包含并最多 第二个
将git log
输出显示为图表也可能是说明性的:
$ git log --graph --oneline --all
或者,如果合并时使用了--squash
标志,则该行为将符合您的期望。来自git-merge
--squash flag documentation(重点是我):
产生工作树和索引状态,就像发生真正的合并一样 (除了合并信息),但实际上不进行提交, 移动HEAD或记录$ GIT_DIR / MERGE_HEAD(引起下一个git commit命令来创建合并提交)。 这使您可以创建 在当前分支之上的单个提交,其效果相同 合并另一个分支 (如果有章鱼,则更多)。
答案 1 :(得分:1)
合并提交记录合并分支中的合并更改,并在合并提示时记录对提交的引用。
从man git-merge浓缩而成:
给出:
A---B---C topic
/
D---E---F---G master
...将topic
合并到master
中将得出:
A---B---C topic
/ \
D---E---F---G---H master
提交H
(合并提交),记录将topic
合并到master
中的结果。它的 first 父级将是G
(在master
上合并之前的提交)。它的 second 父级将是C
(对topic
的最后一次提交)。
在日志中显示的合并提交是合并提交的 second 父级,即您合并的分支的最后一次提交(上例中为C
) 。要将master
分支更改为合并之前的状态(上例中为G
),请对合并之前master
中的最后一次提交进行diff。这将是第一位父级。
git diff master^1 master
作为简写,您可以忽略1
的含义:
git diff master^ master
有关在man gitrevisions上指定修订的更多信息。