对于OracleMERGEINTO语法探究感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解oracle中mergeinto用法解析,并且为您提供关于2:AbortingAMerge(Merg
对于Oracle MERGE INTO语法探究感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解oracle中merge into用法解析,并且为您提供关于2: Aborting A Merge( Merge Conflicts )、Git - Merge: refusing to merge unrelated histories、git merge fatal: refusing to merge unrelated histories解决办法、git merge 不会触发带有选项 --no-commit 的 pre-merge-commit 或 post-merge hooks的宝贵知识。
本文目录一览:- Oracle MERGE INTO语法探究(oracle中merge into用法解析)
- 2: Aborting A Merge( Merge Conflicts )
- Git - Merge: refusing to merge unrelated histories
- git merge fatal: refusing to merge unrelated histories解决办法
- git merge 不会触发带有选项 --no-commit 的 pre-merge-commit 或 post-merge hooks
Oracle MERGE INTO语法探究(oracle中merge into用法解析)
1、MERGE INTO 的用途:
MERGE INTO 是Oracle 9i新增的语法,在10g时得到补充,用来合并UPDATE和INSERT语句,根据一张表或子查询与另一张表进行连接查询,连接条件匹配就进行
UPDATE,不匹配就进行INSERT,这个语法仅需要一次全表扫描就可以完成全部工作,执行效率会比单纯的UPDATE+INSERT高,具体应用可用于表之间的同步。
2、MERGE INTO 的语法:
语法结构:
MERGE [INTO [schema .] table [t_alias]
USING [schema .] { table | view | subquery } [t_alias]
ON ( condition )
WHEN MATCHED THEN merge_update_clause
WHEN NOT MATCHED THEN merge_insert_clause;
语法说明:
MERGE INTO [表名] [别名] --需要更新的目标表
USING ( 子查询/表名/视图)[别名] --源表
ON ([连接条件] AND [...]...) --连接条件/更新条件
WHEN MATHED THEN UPDATE SET [...] --如果匹配,更新表记录,若只作更新出来,下面的INSERT部分可以去掉
WHEN NOT MATHED THEN INSERT VALUES() [...] --如果不匹配,插入表记录
3、MERGE INTO 演示:
1> 创建测试表及数据:
--以表YAG1作为源表,表YAG2作为更新的目标表
CREATE TABLE YAG1 AS SELECT OBJECT_NAME,oOBJECT_ID FROM USER_OBJECTS WHERE ROWNUM<=10;
CREATE TABLE YAG2 AS SELECT OBJECT_NAME,oOBJECT_ID FROM USER_OBJECTS WHERE ROWNUM<=5;
--修改表YAG1中某条记录的OBJECT_NAME,创造符合UPDATE的条件,
sql> UPDATE YAG1 SET OBJECT_NAME=''AAAAA'' WHERE OBJECT_NAME=''T_CAT'';
2>MERGE INTO 更新前两表的记录对比:
sql> SELECT A.OBJECT_ID,A.OBJECT_NAME,B.OBJECT_NAME FROM YAG1 A,YAG2 B WHERE A.OBJECT_ID=B.OBJECT_ID(+) ORDER BY 1;
A.OBJECT_ID A.OBJECT_NAME B.OBJECT_NAME
------------ ---------------- -----------------
46366 AAAAA T_CAT
46367 SUM_STRING SUM_STRING
46368 ARRAYLIST ARRAYLIST
46369 TYSKZ_SJDX TYSKZ_SJDX
46370 TYSKZ_SJXMGX TYSKZ_SJXMGX
46371 ParaOBJECT
46372 T_LINK
46373 STR_SPLIT
46374 SPLIT_TYPE
46375 SYS_PLsql_95487_9_1
3> 执行下面MERGE INTO 语句:
MERGE INTO YAG2 A
USING YAG1 B
ON (A.OBJECT_ID = B.OBJECT_ID)
WHEN MATCHED THEN
UPDATE SET A.OBJECT_NAME = B.OBJECT_NAME
WHEN NOT MATCHED THEN
INSERT VALUES (B.OBJECT_NAME, B.OBJECT_ID);
COMMIT;
4> MERGE INTO 更新后两表的记录对比:
sql> SELECT A.OBJECT_ID,A.OBJECT_NAME,B.OBJECT_NAME FROM YAG1 A,YAG2 B WHERE A.OBJECT_ID=B.OBJECT_ID(+) ORDER BY 1;
A.OBJECT_ID A.OBJECT_NAME B.OBJECT_NAME
------------ ---------------- -----------------
46366 AAAAA AAAAA
46367 SUM_STRING SUM_STRING
46368 ARRAYLIST ARRAYLIST
46369 TYSKZ_SJDX TYSKZ_SJDX
46370 TYSKZ_SJXMGX TYSKZ_SJXMGX
46371 ParaOBJECT ParaOBJECT
46372 T_LINK T_LINK
46373 STR_SPLIT STR_SPLIT
46374 SPLIT_TYPE SPLIT_TYPE
46375 SYS_PLsql_95487_9_1 SYS_PLsql_95487_9_1
.
2: Aborting A Merge( Merge Conflicts )
When a merge conflict occurs, git adds markup lines to the files that have conflicts that identify where the conflicts are. These lines can prevent code from executing properly, because they can''t be interpreted by the Python interpreter. Because of this, it''s important to immediately resolve conflicts and remove the markup.
One way to resolve a conflict is to abort the merge. This doesn''t actually merge the files together, but instead stops attempting to merge them. This can be done with git merge --abort.
Aborting the merge is usually an action you would take if you merged one branch into another by accident, or want to deal with large merge conflicts another way. When you abort a merge, git resets the state of the working directory and git history to the state before you tried to merge.
Instructions
- Abort the merge from the last screen that had conflicts
/home/dq/chatbot$ cd /home/dq/chatbot
/home/dq/chatbot$ git merge --abort
Git - Merge: refusing to merge unrelated histories
场景
我在本地有个代码仓库local-A,本地仓库local-A已经和一个远程仓库remote-A关联了。
接着我又在GitHub上新建了一个仓库remote-B,我希望将本地仓库local-A的本地dev分支push到这个新建的远程库remote-B。我的想法是这样的:
- 在本地仓库local-A里添加刚刚新建的远程库remote-B
- 检出(check out)并切换到remote-B的master分支
- 将本地dev分支merge到当前的master分支
- 解决可能发生的冲突后,将改动全部commit并push到远程库remote-B的master分支上
接着当我做到第三步的时候,发现报错如下:
Merge: refusing to merge unrelated histories
看到报错,我又重新操作了一遍,依然是同样的错误。记得以前我也做过类似的操作,但是却没有现在的问题,百度了下,发现可能是git升级之后造成的。
解决方案
因为两个仓库是不同的项目(本地仓库已经跟踪了另外一个远程库了),git默认不允许不相干的项目进行push等操作。如果想要进行这些操作,就需要加入--allow-unrelated-histories
参数才可以合并两个不同的项目:
git merge --squash dev --allow-unrelated-histories
这句命令表示将dev
分支合并到当前分支,这里的两个本地分支各自追踪不同的远程库,需要加入--allow-unrelated-histories
参数才能够完成合并操作而不报错,至于--squash
参数是为了压缩dev
分支原本的commit历史,可以将原本所有的commit历史合成一个commit,以避免当前分支在合并之后掺入了其他项目的commit历史。
参考链接
- 如何去解决fatal: refusing to merge unrelated histories
- git merge --no-ff是什么意思
git merge fatal: refusing to merge unrelated histories解决办法
git merge dev --allow-unrelated-histories
后面加--allow-unrelated-histories
这句命令表示将dev分支合并到当前分支,这里的两个本地分支各自追踪不同的远程库,需要加入--allow-unrelated-histories
参数才能够完成合并操作而不报错
git merge 不会触发带有选项 --no-commit 的 pre-merge-commit 或 post-merge hooks
如何解决git merge 不会触发带有选项 --no-commit 的 pre-merge-commit 或 post-merge hooks
我目前正在处理在用户拉取或合并到当前分支后添加一些自动化(例如更新用户设置、构建更新的依赖项)。我阅读了 hook 文档,发现 pre-merge-commit / post-merge hooks 可以为我做到这一点。所以,在我们没有合并冲突的用例中,即合并成功,两个钩子都应该触发。
只要合并不会在工作副本上产生任何更改(作为合并的结果),这就可以正常工作。但是,如果有更改(例如,添加了新文件)并且我使用 --no-commit 选项运行 git merge 命令,则不会执行 pre-merge-commit 和 post-merge 挂钩。
至少对于 pre-merge-commit 钩子,我希望在提交之前触发钩子时触发钩子!
这是故意的吗?如果我想要提交,是否还有另一种方法可以在合并成功后触发脚本并忽略该选项?
谢谢!
解决方法
我同意你的观点,文档并没有很清楚应该何时执行,但我认为至少提交过程必须开始。原因如下:
pre-merge-commit
[...] 在合并成功执行后调用,并且
在获取建议的提交日志消息以进行提交之前
第一部分清楚,合并必须成功。第二部分可能会被误解,但我是这样解释的:
- 已收到提交请求
-
pre-merge-commit
次运行 - 提示提交消息
- ...
毕竟,这个钩子在其默认实现中运行 pre-commit
钩子,而 git commit
钩子又被 image0=cv2.imread(''picture.png'',0)
image=cv2.medianBlur(image0,3)
cnts,_=cv2.findContours(image,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
image=cv2.cvtColor(image,cv2.COLOR_GRAY2BGR)
cv2.drawContours(image,cnts,-1,(0,255),thickness=1)
cv2.imshow(''image'',image0)
cv2.imshow(''edged'',image)
cv2.waitKey(0)
调用。尤其是这最后一部分让我觉得这不是一个错误或类似的东西,而是一个设计选择。
今天关于Oracle MERGE INTO语法探究和oracle中merge into用法解析的介绍到此结束,谢谢您的阅读,有关2: Aborting A Merge( Merge Conflicts )、Git - Merge: refusing to merge unrelated histories、git merge fatal: refusing to merge unrelated histories解决办法、git merge 不会触发带有选项 --no-commit 的 pre-merge-commit 或 post-merge hooks等更多相关知识的信息可以在本站进行查询。
本文标签: