¿Cómo se asignan los numbers padre de git?

De la documentation para git-rev-parse :

^, por ejemplo HEAD ^, v1.5.1 ^ 0

 A suffix ^ to a revision parameter means the first parent of that commit object. ^<n> means the <n>th parent (ie <rev>^ is equivalent to <rev>^1). As a special rule, <rev>^0 means the commit itself and is used when <rev> is the object name of a tag object that refers to a commit object. 

Entiendo que git commits puede tener múltiples padres, y que esta syntax se puede usar para eliminar la ambigüedad a qué padre se hace reference, pero ¿qué determina qué padre es el "primer padre" o el "segundo padre"? ¿Se basa únicamente en qué compromiso se desprotegió cuando se fusionaron las confirmaciones?

Por ejemplo, git checkout master; git merge feature resultado de la git checkout master; git merge feature en el master es padre 1, mientras que la git checkout feature; git merge master git checkout feature; git merge master daría como resultado que la feature sea ​​padre 1? ¿O es que pasa algo más aquí?

¿Se basa únicamente en qué compromiso se desprotegió cuando se fusionaron las confirmaciones?

Está bien. Puedes mirar a los padres de una confirmación usando git show o git cat-file -p HEAD .