Lorsque vous utilisez Git Hub, disposez-vous des éléments suivants?
――Je souhaite continuer le développement en utilisant le contenu de la pull request lorsque je tire et reçois la confirmation d'autres personnes.
«J'ai fait une erreur dans la branche sur laquelle je travaillais, et je veux refléter le travail que j'ai fait dans la branche sur laquelle je voulais initialement travailler.
Dans un tel cas, la commande ** stash ** est pratique, je vais donc la présenter avec un exemple d'utilisation. Je vous serais reconnaissant si vous pouviez indiquer s'il existe une méthode plus pratique pour les débutants git.
Qu'est-ce que ** stash **? En un mot, c'est une commande qui peut évacuer (maintenir) l'historique des modifications de la validation à la ** stash list **.
Je vais vous expliquer en utilisant un exemple concret.
Voici une procédure approximative.
--Procédure ① Créer une branche et une requête d'extraction test1.py --Procédure (2) Ajouter le contenu à test1.py en tant que branche A après la demande d'extraction --Procédure ③ Évacuer le contenu ajouté à test1.py vers la liste de cachettes git --Step ④ * Vérifiez le contenu de stash avec git stash list ** --Étape ⑤ Créer une nouvelle branche (Créer une branche B) --Étape ⑥ Tirez le contenu de la télécommande vers la branche B (la partie à tirer diffère selon l'état de la branche A) --Procédure ⑦ Confirmez la commande qui peut refléter le contenu de git stash list --Procédure ⑧ Refléter le contenu de la liste git stash
Après avoir créé la branche A à partir de la branche principale, j'ai validé les fichiers suivants et effectué une pull request.
test1.py
#Premier commit
print("test1")
Je souhaite utiliser le fichier que j'ai validé en attendant la prochaine pull request.
Le contenu suivant a été ajouté à test1.py tout en conservant la branche A.
test1.py
#Premier commit
print("test1")
#Ajouter du contenu
print("test2")
Une fois enregistrées, les modifications de test1.py seront reflétées dans la partie non mise en scène comme l'image.
Ensuite, je veux refléter ce contenu ajouté dans une branche différente. Il est possible de s'engager tel quel dans la même branche, mais en gros ce n'est pas très agréable de s'engager pendant que l'autre partie le vérifie, donc j'aimerais l'éviter. Cet exemple n'était qu'un ajout, mais en réalité, il est possible de remarquer l'erreur dans la pièce qui a été tirée à l'étape 1 et de la corriger. (Du point de vue de l'autre partie, si vous pouvez changer le contenu sans permission, vous devrez le voir depuis le début, merde!)
Évacuez les changements.
Exécutez la commande git stash
dans le terminal (invite de commande pour Windows). Ensuite, le fichier test1.py dans la branche A ressemblera à ceci:
Terminal
git stash
<Après exécution>
test1.py
#Premier commit
print("test1")
Il revient au contenu du fichier lors de sa validation à l'étape ①. En d'autres termes, le contenu ajouté à l'étape 2 est évacué vers git stash list
. Il n'y aura aucune modification de test1.py dans la section non mise en scène. (Cela ressemble à l'image ci-dessous.)
Vérifiez la liste des cachettes git évacuées. La commande à utiliser est:
①
git stash list
(Contenu) Vous pouvez consulter la liste de cachettes git. (Exemple d'utilisation)
Terminal
git stash list
<Résultat d'exécution ci-dessous>
stash@{0}: WIP on branch_name: commit_id2 commit_comment2
Le stash @ {0}
ci-dessus contient le contenu qui a été évacué précédemment. Ce 0 indique que c'est le 0e dans la liste de cachettes. S'il y en a plusieurs, spécifiez la liste de réserve que vous souhaitez utiliser avec ce numéro. Si vous l'exécutez et que rien ne se passe, cela signifie que vous n'avez pas de liste de cachettes git.
②
git stash show stash@{0} -p
(Contenu)
Vous pouvez vérifier le contenu enregistré de la liste git stash. 0 in stash @ {0} spécifie la liste de stash que vous souhaitez vérifier lorsqu'il existe plusieurs listes de stash git. La partie -p
peut être remplacée par --patch
.
(Exemple d'utilisation)
Terminal
git stash show stash@{0} -p
<Résultat d'exécution ci-dessous>
#Premier commit
print("test1")
+
+#Ajouter du contenu
+print("test2")
③
git diff stash@{0}
(Contenu) Vous pouvez afficher le diff de la liste git stash. L'explication en mots est difficile à comprendre, veuillez donc consulter un exemple d'utilisation.
(Exemple d'utilisation)
Terminal
git diff stash@{0}
<Résultat d'exécution ci-dessous>
#Premier commit
print("test1")
-
-#Ajouter du contenu
-print("test2")
Créez une nouvelle branche avant de la refléter. Ici, créez une branche B à partir de la branche principale.
Après avoir créé la branche B, je tire le contenu de la télécommande, mais la partie tirante change selon que la demande de tirage de la branche A est fusionnée ou non.
Utilisez git pull origin master
pour refléter le contenu de la branche principale distante dans la branche B. Le contenu de test1.py à ce moment-là est le suivant.
test1.py
#Premier commit
print("test1")
git pull origin A
pour refléter le contenu de la branche A dans la pull request. Même avec cela, le contenu de la branche A de test1.py peut être reflété dans la branche B. Le contenu reflété est le même que ci-dessus.test1.py
#Premier commit
print("test1")
※Remarque
Si vous corrigez la ** partie tirée ** par la méthode 2, vous obtiendrez un conflit lorsque vous essayez de fusionner la demande d'extraction de la branche B après la fusion de la demande d'extraction de la branche A. Même s'il y a un conflit, il n'y a pas de problème tant qu'il est résolu à chaque fois. Si vous ajoutez simplement la pièce tirée sans la modifier, aucun conflit ne se produira.
(Supplément) Lorsque vous souhaitez extraire le contenu de la branche A vers la branche B, vous pouvez avoir plusieurs commits dans la branche A et vous pouvez vouloir refléter le contenu de l'un d'eux. À ce moment-là, il existe une commande pratique appelée git cherry-pick
. Si vous voulez en savoir plus sur le choix des cerises, il y a une personne qui l'explique de manière facile à comprendre à l'url suivante, alors veuillez vous y référer.
[git] Résumé de la manière de transférer du travail d'autres branches vers votre propre branche
Il y a deux commandes principales qui peuvent être reflétées.
○ 1er
git stash apply stash@{0}
Après avoir reflété cela, la liste git stash restera telle quelle.
○ Deuxième
git stash pop stash@{0}
Une fois que cela est reflété, la liste de stash git sera supprimée.
Le nombre entre {} est un entier pour spécifier la liste de cachettes à refléter. Si vous ne spécifiez pas de liste de stockage, stash @ {0} est spécifié par défaut.
Le contenu évacué par la commande git stash pop
confirmée à l'étape ⑦ est reflété comme suit.
Terminal
git stash pop stash@{0}
Fichier test1.py post-exécution
test1.py
#Premier commit
print("test1")
#Ajouter du contenu
print("test2")
Maintenant, à l'étape (1), les modifications apportées après la demande d'extraction peuvent être reflétées dans la branche B.
Si vous exécutez git stash list
après cela, il n'y a pas de stash @ {0}. Lorsqu'il est exécuté par git stash apply stash @ {0}
, stash @ {0} reste.
Recommended Posts