web-dev-qa-db-fra.com

Pourquoi une "requête d'extraction" git n'est-elle pas appelée une "requête Push"?

La terminologie utilisée pour fusionner une branche avec un référentiel officiel est une "demande d'extraction". C'est déroutant, car il semble que je demande à reporter mes modifications dans le référentiel officiel.

Pourquoi appelle-t-on une demande d'extraction et non une demande Push?

349

Si vous avez un changement de code dans votre référentiel et souhaitez le déplacer vers un référentiel cible, alors:

  • "Push" signifie que vous forcez les modifications présentes dans le référentiel cible (git Push).
  • "Pull" est le référentiel cible qui récupère vos modifications (git pull de l'autre dépôt).

Une "demande d'extraction" consiste à demander au référentiel cible de saisir vos modifications.

Une "demande Push" serait le référentiel cible vous demandant de pousser vos modifications.

293
Sven

Lorsque vous envoyez une demande d'extraction, vous demandez au propriétaire du dépôt officiel de demander certaines modifications à partir de votre propre dépôt. D'où "demande de tirage".

71
JB Nizet

tl; dr puisque je ne suis pas autorisé à faire un Push, je vais simplement faire une demande au propriétaire du repo afin qu'ils décident de tirer


Qui peut envoyer du code dans un référentiel?

Est-ce que quelqu'un (peut-être malfaisant, mal éduqué ou inconnu) devrait pouvoir venir dire ici que je viens de pousser ceci vers votre branche maîtresse et de bousiller tout votre code HAHAHA! ?

Vous ne voulez sûrement pas qu'il le fasse. Par défaut, un filet de sécurité est défini pour que personne ne puisse accéder à votre référentiel. Vous pouvez définissez les autres en tant que collaborateur , ils peuvent alors pousser. Vous donneriez un tel accès aux 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 sans avoir l'autorisation de pousser?
Vous ne pouvez pas donner accès à tout le monde, mais vous voulez donner aux autres un point de vente/d’entrée afin qu’ils puissent adresser une demande au propriétaire du repo à extraire ce code dans le dépôt '. Simplement en rendant le référentiel accessible, ils peuvent le modifier ... faire leurs modifications dans leur propre fourche. Poussez leurs modifications sur leur propre fork . Une fois que c'est dans leur propre repo distant:

Ils émettent une demande d'extraction depuis leur branche et le propriétaire du référentiel en amont (auquel vous ne pouvez pas accéder directement) décide de l'opportunité de fusionner ou non la demande d'extraction.


Aussi une question semi-liée que je recommande de lire Qu'est-ce qui se passe exactement dans un git push? Pourquoi un git push n'est-il pas considéré comme une fusion de git?

28
Honey

Demande Pull: I Demande à vous de Pull mien.

22
hepidad

Je veux pousser quelque chose au repo de quelqu'un d'autre.

Je n'ai pas la permission de pousser (ou tirer, d'ailleurs).

Le propriétaire/collaborateurs a des autorisations. Ils peuvent tirer aussi bien que Push. Je ne peux pas pousser.

Je leur demande donc de tirer de moi - ce qui signifie indirectement que je leur demande d'accepter mon Push.

Donc, pas de demande de Push. Seulement pour un pull. Et pour l'acceptation d'une poussée.

Par conséquent, une demande "pull". Et pas une demande 'Push'.

1
user11705414

C'est le mot "Demande" qui est la clé de ces actions. Vous pourriez aussi penser que vous dites: "Je vous demande de prendre mon travail, acceptez-vous?" - "Une demande de tirage".

C'est un peu déroutant au début, mais c'est logique finalement.

1
Kyzer