it-swarm-pt.tech

Mostrando confirmações feitas diretamente em uma ramificação, ignorando mesclagens no Git

Ao usar o git, existe uma maneira de mostrar confirmações feitas em uma ramificação, ignorando todas as confirmações introduzidas pela mesclagem?

Estou tentando revisar as alterações de código feitas em uma ramificação, ignorando as que fizemos em outras ramificações que foram mescladas. Eu sei que é quase impossível mostrar uma diferença dessa maneira, mas eu gostaria de poder descobrir quais confirmações eu preciso revisar.

78
Channel Cat

--no-merges

Ambos os pais têm peso igual em muitos contextos no git. Se você sempre foi consistente na fusão de outras alterações, pode achar que isso lhe dá o que deseja.

git log --no-merges --first-parent

Caso contrário, você poderá excluir confirmações de outras ramificações nomeadas.

git log --no-merges ^other-branch-1 ^other-branch-2 ^other-branch-3

Se você deseja revisar as alterações que deseja mesclar novamente em uma ramificação principal, a coisa mais fácil a fazer é realizar a mesclagem em um clone local e, em seguida, basta olhar para o diff com o primeiro pai antes de publicar a mesclagem.

112
CB Bailey

Você pode usar git cherry para isso, você encontrará confirmações que ainda não foram mescladas com o upstream ou confirmações que estão em uma ramificação, mas não na outra. Portanto, dados dois ramos denominados "seu ramo" e "mestre":

git cherry -v your-branch master

apresentará uma lista de confirmações em comparação com o ID do patch:

+ c3e441bf4759d4aa698b4a413f1f03368206e82f Updated Readme
- 2a9b2f5ab1fdb9ee0a630e62ca7aebbebd77f9a7 Fixed formatting
+ e037c1d90b812af27dce6ed11d2db9454a6a74c2 Corrected spelling mistake

Você pode observar que confirmações prefixadas por "-" são as que aparecem em ambas as ramificações, enquanto as confirmadas com "+" estão disponíveis apenas em sua ramificação.

Como alternativa, você pode usar:

git log --pretty=format:"%h %s" your-branch..master --no-merges

que mostrará uma lista de confirmações feitas no "seu ramo" que ainda não estão presentes no "mestre"

7
jbochniak

Uma maneira muito hackish:

git log --graph --oneline --no-merges thebranch|grep '^\*'

4
fge