通过创建新分支合并两个分支? - Github

时间:2017-07-30 13:34:29

标签: git github merge

对不起简单的问题,但我是git的新手,并且感觉很难解决我的问题。

我有两个分支udp-sender.c void collect_common_send(void) { static uint8_t seqno; struct { uint8_t seqno; uint8_t for_alignment; struct collect_view_data_msg msg; } msg; /* struct collect_neighbor *n; */ uint16_t parent_etx; uint16_t rtmetric; uint16_t num_neighbors; uint16_t beacon_interval; rpl_parent_t *preferred_parent; linkaddr_t parent; rpl_dag_t *dag; if(client_conn == NULL) { /* Not setup yet */ return; } memset(&msg, 0, sizeof(msg)); seqno++; if(seqno == 0) { /* Wrap to 128 to identify restarts */ seqno = 128; } msg.seqno = seqno; linkaddr_copy(&parent, &linkaddr_null); parent_etx = 0; /* Let's suppose we have only one instance */ dag = rpl_get_any_dag(); if(dag != NULL) { preferred_parent = dag->preferred_parent; if(preferred_parent != NULL) { uip_ds6_nbr_t *nbr; nbr = uip_ds6_nbr_lookup(rpl_get_parent_ipaddr(preferred_parent)); if(nbr != NULL) { /* Use parts of the IPv6 address as the parent address, in reversed byte order. */ parent.u8[LINKADDR_SIZE - 1] = nbr->ipaddr.u8[sizeof(uip_ipaddr_t) - 2]; parent.u8[LINKADDR_SIZE - 2] = nbr->ipaddr.u8[sizeof(uip_ipaddr_t) - 1]; parent_etx = rpl_get_parent_rank((uip_lladdr_t *) uip_ds6_nbr_get_ll(nbr)) / 2; } } rtmetric = dag->rank; beacon_interval = (uint16_t) ((2L << dag->instance->dio_intcurrent) / 1000); num_neighbors = uip_ds6_nbr_num(); } else { rtmetric = 0; beacon_interval = 0; num_neighbors = 0; } /* num_neighbors = collect_neighbor_list_num(&tc.neighbor_list); */ collect_view_construct_message(&msg.msg, &parent, parent_etx, rtmetric, num_neighbors, beacon_interval); //i add this code but it led to an error:invalid type argument //of'->'(have 'struct collect_view_data_msg') SENSORS_ACTIVATE(sht11_sensor); msg.msg->sensors[TEMP_SENSOR] = sht11_sensor.value(SHT11_SENSOR_TEMP); //end added uip_udp_packet_sendto(client_conn, &msg, sizeof(msg), &server_ipaddr, UIP_HTONS(UDP_SERVER_PORT)); SENSORS_DEACTIVATE(sht11_sensor); } parent是从child分支创建的。到目前为止,我不想将child合并到parent。而不是,我应该通过从child创建一个新的分支parent来合并两个分支?

任何帮助欣赏。谢谢

2 个答案:

答案 0 :(得分:2)

我不确定您的用例是什么,但我会尝试根据它们的具体情况来澄清问题。

首先,拥有多个&#34; child&#34;是完全正常的。来自父母的分支&#34;。通常这样做是为了在不同的分支上实现不同的功能,或者分离由多个开发人员完成的工作。您可以合并任意数量的&#34; child&#34;分支后来回到他们的父母&#34;分支。

第二,在创建新分支之前,并不总是需要先将分支合并回其父级。您可以随时在父级的任何提交中进行分支,并且您也可以在方便的时候将它们合并(例如,在代码审查过程完成之后或在您正确测试该分支上的代码之后) )。

根据您的问题,是的,这样做很好:

parent  o -- o -- o -- -- -- -o -- --o -- 
        \          \         /      /
child-2  \          \- o -- o      /
          \                       /
child      \- o -- o -- o -- o --/
            \
child-3      \-- o -- o -- -- -- -->

您现在可以拥有一个child分支,并且您想要合并到parent,然后创建第二个child-2分支,对其进行处理,然后合并它们两个以后。我甚至添加了child-3来表明它不仅限于2个分支。

但是,在创建新分支之前,可能需要先将child合并到parent。当child具有影响后续分支开发的一些关键/重要更改时,通常会发生这种情况,例如,您更改了目录结构或更改了基本/公共类上的API或修复了始终存在的错误。在这些情况下,最好在创建新分支之前先合并child(或者在合并后也可以在child-2child-3等上进行git rebase合并child,无论哪个会引起较少的冲突)。

第三次,不需要合并一个&#34;孩子&#34;分支到它的父母&#34; (除非您的团队/项目的工作流程/流程要求您)。因此,如果您选择首先将childchild-2合并到其他分支临时/测试/集成分支而不是直接合并到parent,那就没关系了。

所以你可以这样做:

parent  o -- o -- o -- -- -- -- -- -- -o 
        \          \                  /
temp     \          \-- -o-- -o- -o--/      
          \             /    /       
child      \- o -- o --/    /
            \              /
child-2      \-- o -- o --/ 

这很有用,例如,当您拥有引入重大更改或相互依赖的分支时,您希望在将其合并回主开发分支之前先了解它们如何协同工作。同样,您可以拥有child-3,等等,因为它不仅限于2个分支。

答案 1 :(得分:0)

取决于您想要实现的目标。为什么要创建新分支?你打算用它做什么?如果需要更新dev分支,可以将父级合并到子级。