对不起简单的问题,但我是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
来合并两个分支?
任何帮助欣赏。谢谢
答案 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-2
,child-3
等上进行git rebase合并child
,无论哪个会引起较少的冲突)。
第三次,不需要合并一个&#34;孩子&#34;分支到它的父母&#34; (除非您的团队/项目的工作流程/流程要求您)。因此,如果您选择首先将child
和child-2
合并到其他分支临时/测试/集成分支而不是直接合并到parent
,那就没关系了。
所以你可以这样做:
parent o -- o -- o -- -- -- -- -- -- -o
\ \ /
temp \ \-- -o-- -o- -o--/
\ / /
child \- o -- o --/ /
\ /
child-2 \-- o -- o --/
这很有用,例如,当您拥有引入重大更改或相互依赖的分支时,您希望在将其合并回主开发分支之前先了解它们如何协同工作。同样,您可以拥有child-3
,等等,因为它不仅限于2个分支。
答案 1 :(得分:0)
取决于您想要实现的目标。为什么要创建新分支?你打算用它做什么?如果需要更新dev分支,可以将父级合并到子级。