国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
git-rebase
git-merge
git-rebase 與 git-merge 的差異
使用 git-rebase 合併的優(yōu)缺點(diǎn)
該用 git-rebase 或 git-merge?
git-merge 派
git-rebase 派
Maison outils de développement git Que font git-rebase et git-merge?? Quelle est la différence ?

Que font git-rebase et git-merge?? Quelle est la différence ?

Jul 15, 2022 am 10:36 AM
git github

à quoi servent git-rebase et git-merge ? Quelle est la différence entre git-rebase et git-merge ? L'article suivant vous présentera la différence entre git-rebase et git-merge. J'espère qu'il vous sera utile !

Que font git-rebase et git-merge?? Quelle est la différence ?

Utiliser Git pour le contr?le de version devrait être l'un des flux de travail que la plupart des ingénieurs rencontrent quotidiennement, mais ce que j'utilise n'est rien de plus que push, pull code>, merge, checkout ou log et d'autres commandes si vous allez plus en profondeur, vous ne pouvez pas comprendre cela pendant le processus. interview. Question : "Connaissez-vous la différence entre la fusion et le rebase dans Git ?" push、pull、merge、checkoutlog 等幾個指令,更深入一點(diǎn)就一問三不知了,在面試時被問到了這個問題:「你知道 Git 的 merge 和 rebase 有什麼不同嗎?」

聽完后我直接困惑,對我來說 rebase 就是用來整理 commit 的工具,居然還可以和 merge 做比較?【推薦學(xué)習(xí):《Git教程》】

git-rebase

先來說說平常我會用 rebase 這個指令來干嘛,假如我新增了一個單元測試,然后 commit,這時候 log 就會多一條 commit 的紀(jì)錄:

Que font git-rebase et git-merge?? Quelle est la différence ?

但是在 commit 完才發(fā)現(xiàn),我少寫了另一個測試案例,因此在補(bǔ)上之后,我又 commit 了一次:

Que font git-rebase et git-merge?? Quelle est la différence ?

這時記錄中會多出另外一條 commit,不過對我來說,這兩個 commit 在做的其實(shí)是同一件事,于是我在 push 到 remote 之前,就會想要先整理一下 commit,把這兩條記錄合并起來。

要把這兩條記錄合并起來有兩個方法,第一個是 reset 到添加第一個測試案例之前,然后直接做一次 commit。第二個方法就是用 rebase 來處理!

首先讓我們看看目前的 log:

Que font git-rebase et git-merge?? Quelle est la différence ?

我的目的是把 9dc67ff87af945 整理成一個,所以要調(diào)整的 commit ?是從 init, 也就是 ?commit id為 7eb57cb 之后的所有 commit,搭配上 rebase 指令的話就是:

git?rebase?-i?7eb57cb

輸入完后就會跳到 vim 的編輯畫面:

Que font git-rebase et git-merge?? Quelle est la différence ?

畫面上會看到 7eb57cb 后的所有 commit(目前就只有 ?9dc67ff87af945 ),接著把 9dc67ffpick 改成 squash,表示把它與前一個 commit 做合并。先點(diǎn)一下 i 后開始用 vim 編輯內(nèi)容:

Que font git-rebase et git-merge?? Quelle est la différence ?

編輯完后,可以點(diǎn) esc 再輸入 :wq 做保存,如果只是好奇進(jìn)來玩看看,不想保存的話就輸入 :q!。結(jié)束上面的流程后,再查看一次 log,會發(fā)現(xiàn)兩條 commit 變成一筆了。保存完會跳到 commit message 的畫面,這邊可以讓你輸入合并后的 commit message,但我就不改了,一樣直接保存:

Que font git-rebase et git-merge?? Quelle est la différence ?

結(jié)束上方的流程后,再查看一次 log,會發(fā)現(xiàn)兩筆 commit 變成一筆了:

Que font git-rebase et git-merge?? Quelle est la différence ?

先 nice,上述的操作為 rebase 的 interactive mode,在 git rebase 后輸入的 -i 其實(shí)就是 interactive 的縮寫。

git-merge

大家應(yīng)該對 merge 指令都非常熟悉,因?yàn)樵谧鲂鹿δ艿臅r候,通常都會拉一個分支出去,完成后再 merge

J'ai été immédiatement confus après l'avoir écouté, pour moi, le rebase est un outil utilisé pour organiser les commits. [Apprentissage recommandé?: "Tutoriel Git"]

git-rebase

Que font git-rebase et git-merge?? Quelle est la différence ?Tout d'abord, parlons de ce que j'utilise habituellement avec la commande rebase. Si j'ajoute un nouveau test unitaire, alors commit, puis log code> aura. un autre enregistrement de <code>commit?: ??Que font git-rebase et git-merge?? Quelle est la différence ?????Mais j'ai découvert après le commit que j'avais manqué d'écrire un autre scénario de test, alors je l'ai ajouté. Après cela, je me suis engagé encore une fois?: ????Que font git-rebase et git-merge?? Quelle est la différence ?????à ce moment, il y aura un autre commit dans l'enregistrement, mais pour moi, ces deux commit sont je fais en fait la même chose, donc avant de passer à distance, je veux trier les commits et fusionner les deux enregistrements. ????Il existe deux fa?ons de fusionner ces deux enregistrements. La première consiste à réinitialiser avant d'ajouter le premier scénario de test, puis à effectuer un commit directement. La deuxième méthode consiste à utiliser rebase pour le gérer?! ????Jetons d'abord un coup d'?il au journal actuel?: ????Que font git-rebase et git-merge?? Quelle est la différence ?????Mon but est d'organiser 9dc67ff et 87af945 en un seul , Donc les commits à ajuster proviennent de init, c'est-à-dire que tous les commits après l'identifiant de commit sont 7eb57cb S'ils sont combinés avec la commande rebase, ce sera?: ??.
git?checkout?string-library
??Il sautera après la saisie. Accédez à l'écran d'édition de vim?: ????image .png????Vous verrez tous les commits après 7eb57cb à l'écran (actuellement seulement 9dc67ff et 87af945), puis changez le pick de 9dc67ff en squash, ce qui signifie fusionner avec le commit précédent. Cliquez d'abord sur i, puis commencez à éditer le contenu avec vim?: ????Que font git-rebase et git-merge?? Quelle est la différence ?????Après l'édition, vous pouvez cliquer sur échap et saisir :wq pour enregistrer. Si vous êtes juste curieux, entrez et jouez. Si vous ne souhaitez pas le sauvegarder, entrez :q!. Après avoir terminé le processus ci-dessus, vérifiez à nouveau le journal et vous constaterez que les deux validations ne font qu'un. Après avoir enregistré, vous accéderez à l'écran du message de validation. Ici, vous pouvez saisir le message de validation fusionné, mais je ne le modifierai pas et je l'enregistrerai directement?: ????Que font git-rebase et git-merge?? Quelle est la différence ?????Terminer le processus ci-dessus Enfin , vérifiez à nouveau le journal et vous constaterez que deux commits ne font qu'un?: ????Que font git-rebase et git-merge?? Quelle est la différence ?????Bien d'abord, l'opération ci-dessus est le mode interactif de rebase, entré après git rebase - je suis en fait l'abréviation de interactif. ??

git-merge

??Tout le monde devrait être très familier avec la commande de fusion, car lorsque vous créez de nouvelles fonctionnalités, vous retirez généralement une branche, puis fusionnez une fois terminée. Revenez à la branche principale telle que master ou develop. Le déroulement de l'opération est le suivant : ????????

在 merge 的時候會有兩種情況,第一種是 ?fast-forward,會把被合并分支的 HEAD 的 reference 移到要合併分支內(nèi)最新的 commit 上,上方操作的 merge 結(jié)果就是 fast-forward,master 的 HEAD 被移到 string-library 的最新 commit,畫成圖的話就是這樣子:

Que font git-rebase et git-merge?? Quelle est la différence ?

但是如果在執(zhí)行 merge 的時候產(chǎn)生沖突,那分支的合并行為就會和 fast-forward 有點(diǎn)不同了。舉例來說,我分別在 master 和 string-library 的同一個文件添加內(nèi)容,那當(dāng)我執(zhí)行 merge 的時候就會要求先修復(fù)沖突:

Que font git-rebase et git-merge?? Quelle est la différence ?

修復(fù)完后,再執(zhí)行 commit 完成合并,而這一次合并時,會再多一個 commit 是有關(guān) merge 了 string-library 分支的紀(jì)錄:

Que font git-rebase et git-merge?? Quelle est la différence ?

這個情況畫成圖就會像這樣子:

Que font git-rebase et git-merge?? Quelle est la différence ?

git-rebase 與 git-merge 的差異

看完上方對 rebasemerge 的介紹后,你也許會想說:

「咦?那這兩個不是完全不同的東西嗎?」

對的,原本我也是這麼認(rèn)為,一直到我去看了 git-rebase 的文檔,才發(fā)現(xiàn)原來我一直誤會它了。在 git book 的 rebase 篇章,第一段就說明了,在 Git 里有兩種方法可以用來整合兩個分支,而這兩個在上方都有提到,分別為 mergerebase

Que font git-rebase et git-merge?? Quelle est la différence ?

從上方的 merge 例子已經(jīng)知道了,merge 在合并的時候會有 fast-forward,和沖突時用一個 commit 記錄合并變更的兩種情形。而 rebase 的整合方式非常有趣,依照關(guān)于 rebase 的另一段說明,它可以「把某個分支中所有 commit 的過程,以另一個分支的 commit 為基礎(chǔ)重播一遍」:

Que font git-rebase et git-merge?? Quelle est la différence ?

這是什麼意思呢?首先讓我們回到上述的例子,并在 master 分支上用 reset,讓 master 的版本回到合并 string-library 之前:

Que font git-rebase et git-merge?? Quelle est la différence ?

現(xiàn)在我們要用 rebase 指令,將 string-library 所有的 commit 修改,以 master 的 commit 為基礎(chǔ)跑一次。使用 rebase 合并的第一步,要先切到想重播 commit 的分支:

git?checkout?string-library

然后再輸入 git rebase 指令,并于后方指定要在哪個分支上重播:

git?rebase?master

執(zhí)行結(jié)果:

Que font git-rebase et git-merge?? Quelle est la différence ?

在 rebase 重播 commit 的過程中,和 merge 相似的地方在于,如果有沖突的話還是需要解決,但在解決后,并不是使用 commit 指令進(jìn)行合并,而是要輸入 git rebase --continue,讓 rebase 可以繼續(xù)重播接下來的 commit:

Que font git-rebase et git-merge?? Quelle est la différence ?

重播完成時,會顯示目前重播到哪個 commit,以 string-library 來說就是最新的add string unit test D。這時候的分支關(guān)系,畫成圖就會變成:

Que font git-rebase et git-merge?? Quelle est la différence ?

上圖在經(jīng)過 rebase 之后,string-library 里 07e38fb 修改,會以 master 的 commit 為基底再重播一次。

需要注意的是,重播后的 commit id 會和原本的不一樣,這等于完全改寫了分支內(nèi)所有的 commit 歷史紀(jì)錄。

De plus, après avoir exécuté le rebase, string-library n'a pas réellement été fusionné avec la branche master, vous devez donc toujours revenir à la branche master pour exécuter la fusion et terminer la fusion?: string-library 其實(shí)還沒有被合并回 master 分支上,因此還是要再切回 master 執(zhí)行 merge,以完成合併:

Que font git-rebase et git-merge?? Quelle est la différence ?

因?yàn)橐呀?jīng)先用 rebase 在重播時處理完 commit 的沖突了,所以現(xiàn)在 merge 就會直接走 fast-forward 合并,也不會另外多一個 merge 的 commit 紀(jì)錄。

使用 git-rebase 合併的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 不會在合併時產(chǎn)生多馀的 commit。

  • 可以在重播的時候以 commit 為單位處理沖突。

  • 合併時會依分支的 commit 排列,能夠比較清楚的 review issue 或 feature 處理的過程。如果使用 merge,在合併后就會依照時間順序穿插排列兩個分支的 commit。

  • 在貢獻(xiàn)開源項(xiàng)目的時候,如果在 push 前先做 rebase,那作者就能夠直接以 fast-forward 的方式合并,不需要再另外解沖突。

缺點(diǎn)

最大的缺點(diǎn)就是上方提到的,使用 rebase 會修改 commit 的歷史紀(jì)錄,如果在自己的 local 整理 commit 或是分支那還好,但如果不小心去異動到 remote 的分支,然后又更不小心用了 git push -f,那可能就會被同事討厭,或被投稿到純靠北工程師。

該用 git-rebase 或 git-merge?

在查了一些資料后,發(fā)現(xiàn) rebase 和 merge 都各有擁護(hù)者,我先闡述他們的想法,再主觀提一下自己的觀點(diǎn)。

git-merge 派

支持 git-merge 派的工程師們認(rèn)為,版本紀(jì)錄有價值的地方就在于項(xiàng)目的 commit,也就是這個項(xiàng)目的「歷史實(shí)際上發(fā)生過哪些事情」,如果你去修改了這些歷史紀(jì)錄那就很不好。因此即使不同分支的內(nèi)容在 merge 后都混在一起,但這些內(nèi)容仍然說明了這個項(xiàng)目的歷史。

git-rebase 派

支持 git-rebase

Que font git-rebase et git-merge?? Quelle est la différence ?

étant donné que le rebase a été utilisé pour gérer les conflits de validation lors de la relecture, la fusion ira désormais directement à la fusion en avance rapide, et il n'y aura pas d'autre enregistrement de validation pour la fusion.

Avantages et inconvénients de l'utilisation de git-rebase pour fusionner

Avantages

  • Aucun commit redondant ne sera généré pendant la fusionner.
  • Les conflits peuvent être gérés dans des unités de validation pendant la relecture. ??
  • ??Lors de la fusion, elle sera organisée en fonction du commit de la branche, afin que le problème de révision ou le processus de traitement des fonctionnalités puisse être clairement compris. Si vous utilisez la fusion, les commits des deux branches seront classés par ordre chronologique après la fusion. ??
  • ??Lorsque vous contribuez à un projet open source, si vous rebasez avant de pousser, l'auteur peut directement fusionner de manière rapide sans avoir à résoudre les conflits séparément. ??
??Inconvénients????Le plus gros inconvénient est celui mentionné ci-dessus. L'utilisation du rebase modifiera l'historique des commits ou des branches localement, ce n'est pas grave, mais si vous y allez accidentellement. modifiez la branche distante, puis utilisez accidentellement git push -f, vous pourriez être détesté par vos collègues, ou vous pourriez être soumis à un ingénieur purement nordique. ??????Dois-je utiliser git-rebase ou git-merge ? ??????Après avoir vérifié certaines informations, j'ai découvert que le rebasement et la fusion ont tous deux leurs propres partisans. Je vais d'abord expliquer leurs idées, puis mentionner subjectivement mes propres opinions. ??????git-merge Pai?????? prend en charge git-merge. Les ingénieurs de Pai pensent que la valeur des enregistrements de version réside dans les commits du projet, c'est-à-dire dans "l'historique de ce projet qui s'est réellement produit". " "Quelles choses", ce serait très mauvais si vous modifiiez ces documents historiques. Ainsi, même si les contenus des différentes branches sont mélangés après la fusion, ils illustrent néanmoins l'histoire du projet. ??????git-rebase faction ?????? prend en charge git-rebase. Les ingénieurs de la faction estiment que le commit parle du "processus d'évolution" de ce projet. Ce qui est important, c'est ce qui se passe, même si. il est modifié L'historique du commit a été supprimé, mais ce qui s'est passé n'a pas changé Puisque nous pouvons utiliser un enregistrement plus clair et plus concis pour que les générations futures puissent le lire, nous devrions le faire. ??????Opinion subjective personnelle??????Personnellement, j'utilise toujours git-rebase pour modifier les commits afin de rendre les enregistrements historiques plus simples et plus faciles à lire, mais l'utilisation est limitée avant de pousser à distance si les enregistrements ont été poussés à distance aujourd'hui. , alors peu importe le désordre, je ne les modifierai pas. Après tout, les enregistrements distants sont partagés par tout le monde. Si je ne les modifie pas à volonté, je respecte les autres membres de l'équipe. ????【Recommandation de didacticiel vidéo connexe?: ??front-end Web??】??

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Comment voir l'historique des engagements de mon référentiel GIT? Comment voir l'historique des engagements de mon référentiel GIT? Jul 13, 2025 am 12:07 AM

Pour afficher l'historique Git Commit, utilisez la commande gitlog. 1. L'utilisation de base est Gitlog, qui peut afficher le hachage de soumission, l'auteur, la date et les informations de soumission; 2. Utilisez Gitlog - Online pour obtenir une vue concise; 3. Filtre par l'auteur ou les informations de soumission via - Auteur et --Grep; 4. Ajouter -P pour afficher les modifications de code, - stat pour afficher les statistiques de changement; 5. Utilisez - GRAPH et - TOUT pour afficher l'historique de la branche, ou utiliser des outils de visualisation tels que Gitkraken et VScode.

Comment supprimer une branche git? Comment supprimer une branche git? Jul 13, 2025 am 12:02 AM

Pour supprimer une branche GIT, assurez-vous d'abord qu'elle a été fusionnée ou aucune rétention n'est requise. Utilisez Gitbranch-D pour supprimer la branche fusionnée locale. Si vous devez forcer la suppression des branches non fusionnées, utilisez le paramètre -D. La suppression de branche à distance utilise la commande gitpushorigin-selebranch-name et peut synchroniser les référentiels locaux des autres via Gitfetch-prne. 1. Pour supprimer la branche locale, vous devez confirmer si elle a été fusionnée; 2. Pour supprimer la branche distante, vous devez utiliser le paramètre - Delete; 3. Après la suppression, vous devez vérifier si la branche est supprimée avec succès; 4. Communiquez avec l'équipe pour éviter de supprimer accidentellement des succursales partagées; 5. Nettoyez régulièrement les branches inutiles pour garder l'entrep?t propre.

Comment ajouter un sous-arbre à mon référentiel GIT? Comment ajouter un sous-arbre à mon référentiel GIT? Jul 16, 2025 am 01:48 AM

Pour ajouter un sous-arbre à un référentiel GIT, ajoutez d'abord le référentiel distant et obtenez son historique, puis fusionnez-le dans un sous-répertoire à l'aide des commandes Gitmerge et Gitread. Les étapes sont les suivantes: 1. Utilisez la commande gitremoteadd-f pour ajouter un référentiel distant; 2. Exécutez Gitmerge-Sécursive-no-Commit pour obtenir du contenu de branche; 3. Utilisez gitread-tree - préfix = pour spécifier le répertoire pour fusionner le projet en tant que sous-arbre; 4. Soumettre les modifications pour compléter l'addition; 5. Lors de la mise à jour, gitfetch en premier et répétez la fusion et les étapes pour soumettre la mise à jour. Cette méthode maintient l'historique du projet externe complet et facile à entretenir.

Comment identifier les faux altcoins? Vous apprendre à éviter la fraude à la crypto-monnaie Comment identifier les faux altcoins? Vous apprendre à éviter la fraude à la crypto-monnaie Jul 15, 2025 pm 10:36 PM

Pour identifier les fausses altcoins, vous devez commencer à partir de six aspects. 1. Vérifiez et vérifiez les antécédents des matériaux et du projet, y compris les livres blancs, les sites Web officiels, les adresses open source du code et la transparence de l'équipe; 2. Observer la plate-forme en ligne et donner la priorité aux échanges traditionnels; 3. Méfiez-vous des rendements élevés et des modes d'échauffement des personnes pour éviter les pièges de fonds; 4. Analyser le code du contrat et le mécanisme de jeton pour vérifier s'il existe des fonctions malveillantes; 5. Examiner les opérations de la communauté et des médias pour identifier la fausse popularité; 6. Suivez les suggestions pratiques anti-fraude, comme ne pas croire aux recommandations ou en utilisant des portefeuilles professionnels. Les étapes ci-dessus peuvent effectivement éviter les escroqueries et protéger la sécurité des actifs.

Quel est le numéro de code de Bitcoin? Quel style de code est Bitcoin? Quel est le numéro de code de Bitcoin? Quel style de code est Bitcoin? Jul 22, 2025 pm 09:51 PM

En tant que pionnier dans le monde numérique, le nom de code unique de Bitcoin et la technologie sous-jacente ont toujours été au centre de l’attention des gens. Son code standard est BTC, également connu sous le nom de XBT sur certaines plateformes qui répondent aux normes internationales. D'un point de vue technique, Bitcoin n'est pas un style de code unique, mais un projet logiciel open source énorme et sophistiqué. Son code principal est principalement écrit en C et intègre la cryptographie, les systèmes distribués et les principes économiques, afin que n'importe qui puisse voir, examiner et contribuer son code.

Qu'est-ce que la pièce inutile? Aper?u de l'utilisation inutile des devises, des caractéristiques exceptionnelles et du potentiel de croissance future Qu'est-ce que la pièce inutile? Aper?u de l'utilisation inutile des devises, des caractéristiques exceptionnelles et du potentiel de croissance future Jul 24, 2025 pm 11:54 PM

Quels sont les points clés du catalogue? UselessCoin: Présentation et caractéristiques clés des principales caractéristiques des principales caractéristiques d'UselessCoin inutile (inutile) Perspectives futures: Qu'est-ce qui affecte le prix d'UselessCoin en 2025 et au-delà? Futumes Perspectives Core Fonctions et importances d'UselessCoin (inutile) Comment fonctionne UselessCoin (inutile) et quels sont ses avantages comment UselessCoin fonctionne

Comment définir des variables d'environnement dans l'environnement PHP Description de l'ajout de variables d'environnement de course PHP Comment définir des variables d'environnement dans l'environnement PHP Description de l'ajout de variables d'environnement de course PHP Jul 25, 2025 pm 08:33 PM

Il existe trois fa?ons principales de définir des variables d'environnement dans PHP: 1. Configuration globale via Php.ini; 2. Passé via un serveur Web (tel que setenv d'Apache ou Fastcgi_param de Nginx); 3. Utilisez la fonction PUTENV () dans les scripts PHP. Parmi eux, PHP.ini convient aux configurations globales et modifiées, la configuration du serveur Web convient aux scénarios qui doivent être isolés et PUTENV () convient aux variables temporaires. Les stratégies de persistance incluent des fichiers de configuration (tels que PHP.ini ou la configuration du serveur Web), les fichiers .env sont chargés de bibliothèque Dotenv et l'injection dynamique de variables dans les processus CI / CD. Les informations sensibles à la gestion de la sécurité doivent être évitées à code dur et il est recommandé de l'utiliser.

Blockbuster Python terminé Affichage de l'entrée Python Collection de site Web fini gratuit Blockbuster Python terminé Affichage de l'entrée Python Collection de site Web fini gratuit Jul 23, 2025 pm 12:36 PM

Cet article a sélectionné plusieurs sites Web de projet "finis" Python et des portails de ressources d'apprentissage "Blockbuster" de haut niveau pour vous. Que vous recherchiez l'inspiration de développement, l'observation et l'apprentissage du code source au niveau de la ma?trise ou que vous amélioriez systématiquement vos capacités pratiques, ces plateformes ne sont pas manquées et peuvent vous aider à devenir un ma?tre Python rapidement.

See all articles