Quelle est la différence entre l'auteur et le commiter dans Git?
Je viens de découvrir la suite de commit sur GitHub:
https://github.com/felixge/node-formidable/commit/0a0b150668daa3c6f01626d2565b898e5da12392
Comment fait-on pour avoir plusieurs auteurs sur le même commettre comme ça?
- En fait, vous remarquerez que l'auteur et le commiter...
- Double Possible de la Différence entre l'auteur et le commiter dans Git?
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas vraiment deux auteurs - c'est un auteur et un committer. Les deux domaines ont des significations différentes. L'auteur est celui qui a créé le contenu, et le livreur est celui qui l'a commis. Lorsque vous effectuez une normale commettre, vous êtes à la fois. (Et les deux sont associés à une électronique et d'horodatage.)
Mais peuvent être différentes dans un certain nombre de façons:
git format-patch
/git am
- cette paire permet de tourner les commits dans les patchs, généralement soumis par e-mail, puis demandez à quelqu'un de les appliquer. Vous restez l'auteur; la personne qui les applique est le livreur. C'est très certainement ce qui s'est passé sur github là.git commit --amend
,git rebase
,git filter-branch
- Ces sont essentiellement des variantes sur la réécriture de l'histoire, allant de la simple s'engager à l'histoire d'une branche à l'ensemble de l'histoire. Ils peuvent potentiellement modifier le livreur de l'information - en particulier, ils ont toujours réécrire le livreur timestamp. L'auteur d'origine reste en place (par défaut dans les modes de fonctionnement), et si l'auteur est aussi celui de faire de la réécriture, de leur nom et l'email de rester, mais le timestamp est naturellement différent.man git-format-patch
.Il n'y a pas plusieurs auteurs associés à ce commit (ni est-il actuellement possible d'attribuer plusieurs auteurs pour un seul commit). Dans ce cas, gliese1337 était le auteur, et felixge était le committer. Le plus probable, cela s'est produit parce que gliese1337 soumis une demande d'extraction qui a été accepté et puis validées par felixhe (le référentiel propriétaire). Ce flux de travail est assez commun sur GitHub. C'est également utile pour les cas où un projet responsable reçoit un patch via e-mail, de sorte que l'auteur du patch lui-même reçoit un crédit pour le patch, même si il ou elle n'a pas de commettre d'accès au projet.
Un couple de liens relatifs:
Court Git Wiki l'article sur l'auteur
Une demande de fonctionnalité pour l'auteur de plusieurs fonctionnalités de Git core
Il n'est pas de multiples auteurs. L'un est l'auteur et l'autre est la commiter.
Si vous souhaitez faire un clone, vous pouvez le voir clairement:
Git interface web comme GitHub et GitLab
Dans de tels systèmes, lors de la fusion d'un patch, l'auteur peut ou peut ne pas être différent de la valider selon les pensions de paramètres.
Depuis Git(Hub|Lab) de tenir à la fois l'amont et à la fourche des référentiels sur la même machine, il peut le faire automatiquement faire quelque chose que vous pouvez faire aussi bien localement:
Créer une fusion de la validation.
Ne génère pas l'auteur != committer.
Garde le SHA ou le nouveau commit intact, et crée un nouveau commit:
Historiquement, c'est la première méthode disponible sur GitHub.
Localement, ce qui est fait avec
git merge --no-ff
.Ce produit deux commits par pull request, et conserve une fourchette dans l'historique de git.
rebase sur le dessus de
master
Alors que ce n'est pas obligatoire, en principe, et même pas fait par défaut localement par
git rebase
, GitHub aussi hacks la s'engage à régler à valider == quiconque appuyé sur le bouton fusionner.La raison pour cela, c'est qu'il donne la responsabilité de la responsable de projet.
L'arbre git ressemble maintenant à:
qui est exactement comme celle de la
git apply
e-mail patchs.Sur GitHub actuellement:
https://help.github.com/articles/about-merge-methods-on-github/