这是我的提交历史:
git checkout branchA
git merge branchB
我有一个branchA分支,我添加了一个文件。然后,我分支到branchB。由于某种原因(重构),该文件后来在branchB中被删除。我将这些更改后移到branchA中。但后来又在branchB中添加了文件。最后我将branchB合并到branchA。
declare
type t_rid_arr is table of rowid index by pls_integer;
type t_row_status_arr is table of eba_cm_checklist_rows.row_status%type index by pls_integer;
type t_percent_complete_arr is table of number index by pls_integer;
l_rid_arr t_rid_arr;
l_row_status_arr t_row_status_arr;
l_percent_complete_arr t_percent_complete_arr;
begin
SELECT
rid,
row_status,
eba_cm_checklist_std.get_row_percent_complete(pc.id,pc.checklist_id,pc.max_col_num) AS percent_complete
bulk collect into
l_rid_arr,
l_row_status_arr,
l_percent_complete_arr
FROM (
SELECT r.rowid as rid,
r.*,
count(*) over(partition by checklist_id) AS max_col_num
FROM eba_cm_checklist_rows r
) pc;
forall i in 1..l_rid_arr.count
update eba_cm_checklist_rows
set row_status = case when l_percent_complete_arr(i) = 100 then 'Green' else row_status end
where rowid = l_rid_arr(i);
end;
/
在合并期间,没有提到文件a.c.并且在branchA中合并后该文件不存在。为什么git无法在branchB中看到文件a.c被添加到AFTER(关于日期和时间)删除(在两个分支中),因此它需要保留它?至少,我想看到冲突或其他什么......
感谢您的帮助!
答案 0 :(得分:0)
从评论中:
具体来说,三个(也只有三个)是很重要的:合并基础, 两个分支重新组合在一起的位置(这是您的底部添加新的 文件a.c commit),以及两个分支提示A和B。
而且,正如您提到的:
Git看到合并基础之间的文件a.c没有变化 和branchB。但是在合并基础和branchA之间,它看到一个 删除。因此结果是a.c文件被删除。
您可以在合并分支之前对两个提交使用git difftool
。您将能够看到丢失的文件及其内容,并手动重新保存它们。
您还可以在两个分支上使用git diff --name-only
。确定丢失的文件后,可以直接将它们从branchB检出到branchA:
git checkout branchA
git checkout branchB -- a.c