La terminologie utilisée pour fusionner une branche avec un référentiel officiel est une «pull request». C'est déroutant, car il semble que je demande de pousser mes modifications dans le référentiel officiel.
Pourquoi est-il appelé une demande de tirage et non une demande de push?
git
github
pull-request
Alejandro Sanz Díaz
la source
la source
git push
. Pour moi, cela dit tout ... (oui, ils peuvent émettre git pull, puis git push, mais le push a été demandé et c'est ce qui est finalement fait)merge requests
. Beaucoup plus clair, à mon humble avis. :)Réponses:
Si vous avez un changement de code dans votre référentiel et que vous souhaitez le déplacer vers un référentiel cible, alors:
git push
).git pull
partir de l'autre référentiel).Une «pull request» est que vous demandez au référentiel cible de récupérer vos modifications.
Une «demande push» serait le référentiel cible vous demandant de pousser vos modifications.
la source
Lorsque vous envoyez une demande d'extraction, vous demandez (demandez) au propriétaire officiel du référentiel de retirer certaines modifications de votre propre référentiel. D'où "pull request".
la source
tl; dr puisque je ne suis pas autorisé à faire un push, je vais juste gentiment faire une demande au propriétaire du repo afin qu'ils décident de tirer
Qui peut envoyer du code vers un référentiel?
Si quelqu'un (peut-être mauvais ou sans instruction ou inconnu) pouvait venir dire ici, je viens de pousser cela dans votre branche principale et de foirer tout votre code HAHAHA! ?
Vous ne voulez sûrement pas qu'il fasse ça. Par défaut, un filet de sécurité est mis en place afin que personne ne puisse pousser à votre repo. Vous pouvez définir les autres comme collaborateurs , puis ils peuvent pousser. Vous accorderiez un tel accès à des personnes en qui vous avez confiance.
Donc, si vous n'êtes pas un collaborateur et essayez de pousser, vous obtiendrez une erreur indiquant que vous n'avez pas la permission.
Alors, comment les autres développeurs peuvent-ils pousser vers un référentiel qu'ils ne sont pas autorisés à pousser?
Vous ne pouvez pas donner accès à tout le monde, mais vous voulez donner aux autres un point de sortie / d'entrée afin qu'ils puissent faire «une demande au propriétaire du référentiel pour insérer ce code dans le référentiel». Autrement dit, en rendant le dépôt accessible, ils peuvent le bifurquer ... apporter leurs modifications dans leur propre fourchette. Poussez leurs modifications dans leur propre fork . Une fois dans leur propre dépôt à distance:
Ils font une demande de pull depuis leur fork et le propriétaire du référentiel en amont (vers lequel vous ne pouvez pas pousser directement) décidera de fusionner ou non la demande de pull.
Aussi une question semi-connexe que je recommande de lire Que se passe-t-il exactement dans un git push? Pourquoi un push git n'est-il pas considéré comme une fusion git?
la source
Pull Request: Je vous demande de tirer le mien.
la source
I >>> You
- Vous changez le point de référence deux fois dans le même contexte ... plutôt queI >>>> You <<<< Mine
Je veux pousser quelque chose au repo de quelqu'un d'autre.
Je n'ai pas la permission de pousser (ou de tirer, d'ailleurs).
Le propriétaire / collaborateurs a des autorisations. Ils peuvent tirer aussi bien que pousser. Je ne peux pas pousser.
Donc, je leur demande d'effectuer une traction de moi - ce qui signifie indirectement que je leur demande d'accepter ma poussée.
Donc, pas de demande de push. Seulement pour une traction. Et pour l'acceptation d'une poussée.
Par conséquent, une demande de «pull». Et pas une demande «push».
la source
C'est le mot «demande» qui est clé dans ces actions. Vous pourriez aussi penser à cela comme disant "J'ai une demande pour vous de prendre mon travail, acceptez-vous?" - "A Pull Request".
C'est un peu déroutant au début, mais cela a finalement du sens.
la source
Pour mieux comprendre cela et vous en souvenir pour toujours, vous devez l'imaginer.
Imaginez un grand arbre vivant {comme votre référentiel}. L'arbre est trop solide pour que vous puissiez y insérer une branche ou y ajouter une nouvelle pièce {symbolise la création d'une nouvelle branche ou vous y insérez du code}, à la place vous devez demander à l'arbre de tirer une branche dans le tronc ou d'avoir le des changements de votre part.
Le terme «pull demandes» vient de la nature distribuée. Au lieu de simplement insérer vos modifications dans le référentiel (comme vous le feriez avec un référentiel centralisé, par exemple avec Subversion), vous publiez vos modifications séparément et demandez au responsable de récupérer vos modifications. Le responsable peut alors examiner les modifications et effectuer cette traction.
Donc, vous "demandez" essentiellement aux gars disposant d'un accès en écriture au dépôt auquel vous souhaitez contribuer, de "tirer" de votre dépôt.
Les requêtes Pull vous permettent de parler aux autres des modifications que vous avez apportées à une branche dans un référentiel sur GitHub. Une fois qu'une demande d'extraction est ouverte, vous pouvez discuter et examiner les modifications potentielles avec des collaborateurs et ajouter des validations de suivi avant que vos modifications ne soient fusionnées dans la branche de base. Explication de Github
la source
Je pense que c'est une terminologie idiote parce que je veux penser que je veux vous POUSSER quelque chose et ne pas penser l'inverse en demandant à quelqu'un d'autre de retirer les ajouts. Par conséquent, il doit être changé en PUSH REQ. puisque je suis la partie active. La flèche va dans l'autre sens en commençant par moi et pas le Dingo à l'autre bout. A MON HUMBLE AVIS.
la source
Pensez de cette façon. Référentiel local vs référentiel distant.
git push
) - en d'autres termes, le référentiel distant tire des codes de vous (local).Vous demandez quelque chose. Alors, demandez-vous,
la source
Je crains que la plupart de ces réponses ne répondent à la question Que signifie «tirer une demande»? ou Que signifierait «pousser la demande»? plutôt que la question du PO: pourquoi est-ce appelé une demande de tirage et non une demande de poussée?
Normalement, ce type de remplacement de question est acceptable, mais dans ce cas, il est clair que le PO connaît les réponses à ces questions de remplacement, donc y répondre n'est pas très utile.
Seuls les gens de GitHub qui ont inventé le terme le savent avec certitude. Cependant, il semble évident que ce choix terminologique reflète quelque chose comme le point de vue suivant concernant le phénomène des «changements entrant dans un référentiel de l'extérieur»: Le mainteneur fait l'action (pull) .
Cependant, une demande est également une action, et l'auteur de cette action n'est pas le responsable mais plutôt le demandeur (qui a fait encore plus d'action, à savoir le travail). Ainsi, le terme «pull request» crée une confusion quant à l'identité de l'agent . En fin de compte, la confusion est due à la nature récursive d'une demande: une demande est à la fois une action d'un agent principal et une demande d'une action future par un deuxième agent.
La situation est tout à fait analogue à des constructions linguistiques désormais courantes comme «nous avons construit notre maison» (utilisé à la place de «nous avons payé quelqu'un d'autre pour construire notre maison»), dans la mesure où la responsabilité de l'action principale est transférée de l'agent original évident à un agent secondaire remplissant un rôle social de gestion.
On pourrait en conclure que la raison du choix terminologique est la légitimation du point de vue selon lequel le travail de direction est un travail de première classe . En outre, la raison de la confusion concernant ce choix terminologique peut être que les travailleurs non cadres ont naturellement un point de vue différent.
la source