Idea 获取 git 仓库时更新类型update type 的选择

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://icode.blog.csdn.net/article/details/95956109

Idea 获取 git 仓库时更新类型update type 的选择

各选项代表内容:
在这里插入图片描述

注意:

Update Type 选择

  • Merge:结果与运行 git fetch ; git merge 或 结果相同 git pull。
  • Rebase:结果与运行 git fetch ; git rebase 或 结果相同 git pull --rebase。
  • Branch Default:此选项用于选择应用分支的默认命令。default 命令 branch. 在 .git/config 配置文件的部分中 指定 。

使用场景:

Merge:因为成员的代码开发工作已经完成了,也不需要再保留这个分支了,所以我们可以把这个成员分支 merge 到主分支上,当然冲突在所难免,手工解决的工作肯定逃不掉,但是利大于弊不是吗。merge 以后,分支就不存在了,但是在 Git 的所有分支历史中还能看到身影。

Rebase:如果修改了某个公用代码的 BUG,这个时候就应该是把所有的 OEM 版本分支 rebase 到这个修复 BUG 的分支上来,在 rebase 过程中,Git 会要你手动解决代码上的冲突,你需要做的就是把修复 BUG 的代码放到目标分支代码里面去。rebase 的结果是:所有的分支依然存在。

比如说自己在自己分支开发了一段时间,之后另外的同事开发的功能正式上线到 master 分支了,那么我可以在当前的分支下 rebase 一下 master 分支,这样我这个分支的几个 commits 相对于 master 还是处于最顶端的,也就是说 rebase 主要用来跟上游同步,同时把自己的修改顶到最上面

  1. merge 结果能够体现出时间线,但是 rebase 会打乱时间线。
  2. 而 rebase 看起来简洁,但是 merge 看起来不太简洁。
  3. 最终结果是都把代码合起来了,所以具体怎么使用这两个命令看项目需要。

还有一点说明的是,在项目中经常使用git pull来拉取代码,git pull相当于是git fetch + git merge,如果此时运行git pull -r,也就是git pull –rebase,相当于git fetch + git rebase

展开阅读全文

更新主键时的update触发器

05-18

有两张表A,B结构完全相同,表栏位太多只列举几个.rncreate table Arn(rn u_id number ,rn u_name varchar2(20),rn u_age number,rn u_DATE DATErn)rn u_id,u_DATE 是联合主键.rn表A有一个triggerrncreate or replace trigger t_mlog_Arn before insertrn on mlog$_Arn for each rowrnrnbeginrn if :new.dmltype$$ = 'D'rn thenrn :new.snaptime$$ := '';rn end if;rn end t_mlog_A;rn现在每隔五分钟把表A的数据刷新到表B中.rnrn1创建MVrn CREATE MATERIALIZED VIEW Brn ON PREBUILT TABLE WITH REDUCED PRECISIONrn REFRESH FAST ON DEMANDrn WITH PRIMARY KEYrn FOR UPDATErn ASrn SELECT * FROM A;rn2 创建job 部分参数省略rn BEGINrn DBMS_SCHEDULER.CREATE_JOB(job_name => 'JOB_' || B,rn schedule_name => schedule_name,rn job_type => 'PLSQL_BLOCK',rn job_action => 'BEGIN DBMS_SNAPSHOT.REFRESH(LIST => ''' ||rn A || '''); END;');rn DBMS_SCHEDULER.ENABLE(name => 'JOB_' || table_name);rnend;rnrn问题:rn rn inset into A table values(1,'A',1);rn inset into A table values(2,'B',2);rn inset into A table values(3,'C',3);rn1因为job 是每五分钟刷新一次,由于更新了主键.由于找不到主键表B中的数据rn 假设第一次是在10:35执行没有手动更改数据表A的数据全部刷到表Brn B 表rn 1 A 1 2010-05-18 10:30rn 2 B 2 2010-05-18 10:30rn 3 C 3 2010-05-18 10:30rn 第二次是在10:40执行,在执行前更改主键rn --u_name是唯一的.rn updae A SET U_ID=4,u_date=sysdate WHERE U_NAME='A';rn 由于trigger原因rn 表B中并没有更新u_id为1。rn 而是插入了一笔新的值rn u_id u_name u_age u_datern 1 A 1 2010-05-18 10:30rn 2 B 2 2010-05-18 10:30rn 3 C 3 2010-05-18 10:30rn 4 A 1 2010-05-18 10:38 rn 而本意是想更新 1 A 1 2010-05-18 10:30 数据.请问各位大侠怎么结果.rnrn rn rn 论坛

没有更多推荐了,返回首页