Eu tenho um repositório git, A
, que usa um submódulo externo, B
, do github. O URL salvo para B
in. gitmodules
é origin/B
, que é meu fork de upstream/B
. Eu não consigo upstream/B
.
Em um ponto, eu estava desenvolvendo dentro de B
, empurrando meus desenvolvimentos para origin/B
e confirmando essas alterações em A
. Eventualmente, uma vez que eu testei as atualizações, fiz um pedido de pull para upstream/B
.
Alguns dias depois, minha solicitação de pull foi "mesclada" pelas pessoas que gerenciam o upstream, usando o botão de squash no github. Agora, B
e origin/B
não eram mais compatíveis com upstream/B
, embora o conteúdo do arquivo fosse idêntico. Eu queria fazer mais desenvolvimentos e talvez fazer outra solicitação de pull mais tarde, então eu fiz git reset --hard upstream/B
e, em seguida, git push -f origin
para sincronizar com a ramificação upstream. (Sim, eu sei os motivos para ter cuidado ao fazer reset --hard
e push -f
. Tive o cuidado de não perder nenhum conteúdo em B
.)
Eu não quero fazer nenhum tipo de reset --hard
ou rebase
em A
. Houve outras mudanças em paralelo que tornam esse tipo de operação muito complicada. O problema é que meu histórico de A
agora contém ponteiros para confirmações em origin/B
que não estão mais no histórico de nenhuma ramificação.
Esses commits serão coletados como lixo no github em algum momento? Preciso criar um branch ou tag nesses commits para mantê-los? Ou eles serão preservados desde que eles estavam em um pedido de puxar?