Comment utiliser Git Force Pull

Comment utiliser Git Force Pull
Les fichiers GIT et les dossiers de tout projet GIT peuvent être partagés par plusieurs utilisateurs de Git qui travaillent dans une équipe. Lorsque plusieurs utilisateurs essaient de travailler sur le même fichier ou le même dossier, le conflit se produit. Supposons que lorsque les deux utilisateurs travaillent sur le même fichier d'un référentiel, et si un utilisateur modifie le fichier après la modification effectuée par un autre utilisateur, la modification effectuée par le premier utilisateur sera perdue par la dernière mise à jour. Ce problème peut être résolu manuellement. L'utilisateur doit faire la force de force pour écraser les modifications du référentiel local sans affecter les modifications apportées dans le référentiel local qui ne sont pas poussés. 'git pull' La commande n'est pas en mesure de résoudre ce problème. La façon d'utiliser Git Force Pull by 'git fetch' et 'git réinitialisation' Les commandes ont montré ce tutoriel.

Conditions préalables:

Installer GitHub Desktop

GitHub Desktop aide l'utilisateur GIT à effectuer graphiquement les tâches liées à Git. Vous pouvez facilement télécharger le dernier installateur de cette application pour Ubuntu à partir de GitHub.com. Vous devez installer et configurer cette application après le téléchargement pour l'utiliser. Vous pouvez également vérifier le tutoriel pour l'installation de GitHub Desktop sur Ubuntu pour connaître correctement le processus d'installation.

Créer un compte GitHub

Vous devrez créer un compte GitHub pour vérifier les commandes utilisées dans ce tutoriel.

Créer un référentiel local et distant

Vous devez créer un référentiel local et publier le référentiel dans le serveur distant pour tester les commandes utilisées dans ce tutoriel.

Écraser les modifications locales pour forcer la traction Git:

Le 'git fetch -all' Commande télécharge tout le contenu du référentiel distant dans le référentiel local mais ne fusionne pas le contenu avec le référentiel local. Après avoir exécuté la commande fetch, si le 'git réinitialisation' La commande est exécutée avec le -dur Option, alors tous les fichiers et dossiers correspondants du référentiel local seront remplacés par le contenu du référentiel distant. Toutes les modifications locales non engagées et engagées qui ne sont pas poussées seront supprimées pour le -option difficile. Ce problème a été décrit dans cette partie du tutoriel en utilisant un référentiel local nommé Python publié auparavant dans le serveur distant.

Ouvrir le basique.py Fichier du référentiel distant pour vérifier le contenu du fichier. L'image suivante montre que le fichier contient quatre lignes de script pour ajouter deux nombres.

Force Git Pull pour les changements non engagés:

Maintenant, ouvrez la base.Fichier PY du référentiel local dans n'importe quel éditeur de texte et modifiez le fichier avec le contenu suivant. Enregistrez le fichier et quittez de l'éditeur.

Imprimer («Ajout de trois numéros»)
a = 10
b = 20
C = 30
Imprimer (A + B + C)

Exécutez les commandes suivantes pour ajouter le modifié basique.py fichier dans le référentiel local et vérifier l'état du référentiel.

$ git ajouter de base.py
$ statut git

La sortie suivante apparaîtra après avoir exécuté la commande. La sortie montre que la tâche n'est pas encore engagée.

Exécutez les commandes suivantes pour vérifier le contenu du basique.py fichier avant de tirer le contenu du référentiel distant et de vérifier le contenu du basique.py Après avoir tiré avec force.

$ Cat Basic.py
$ git fetch - tout
$ git réinitialisation - Origine dure / Main
$ Cat Basic.py

La sortie suivante montre que le contenu du basique.py Le fichier a été écrasé par le contenu du basique.py Fichier du serveur distant, et le contenu modifié a été perdu.

Forcer Git Pull pour les changements engagés:

Encore une fois, ouvrez le basique.py Fichier du référentiel local dans n'importe quel éditeur de texte et modifiez le fichier avec le contenu suivant. Enregistrez le fichier et quittez de l'éditeur.

imprimer («soustraire deux nombres»)
a = 50
b = 20
Imprimer (A - B)

Exécutez les commandes suivantes pour ajouter le modifié basique.py Fider dans le référentiel local, commettre la tâche et vérifier l'état du référentiel.

$ git ajouter de base.py
$ git commit -m "Basic.PY a mis à jour "
$ statut git

La sortie suivante montre que le modifié basique.py Le fichier est ajouté et engagé avec un message de validation. L'arbre de travail actuel est propre maintenant.

Exécutez à nouveau les commandes précédentes pour vérifier comment le 'git réinitialisation' La commande fonctionne pour la tâche engagée.

$ Cat Basic.py
$ git fetch - tout
$ git réinitialisation - Origine dure / Main
$ Cat Basic.py

La sortie suivante montre que le contenu du fichier distant a à nouveau écrasé le contenu du fichier local. Alors le 'git réinitialisation' La commande fonctionne de même pour les tâches engagées et non engagées.

Enregistrer les modifications locales avant de forcer la traction Git:

Le problème d'écrasement peut être résolu en créant une nouvelle branche. Commettre toutes les modifications dans le référentiel avant d'exécuter les commandes de traction. Encore une fois, ouvrez le basique.py Fichier du référentiel local dans n'importe quel éditeur de texte et modifiez le fichier avec le contenu suivant. Enregistrez le fichier et quittez de l'éditeur.

imprimer («multiplier deux nombres»)
a = 10
b = 20
imprimer (a * b)

Exécutez les commandes suivantes pour vérifier la liste des branches, passer à une nouvelle branche et vérifier le contenu du basique.py Fichier après avoir exécuté les commandes Pull.

Branche Git $
$ Git Checkout -B New-Branch
$ git fetch-tout
$ git réinitialisation - Origine dure / Main
$ Cat Basic.py

La sortie suivante montre que le contenu du basique.py Le fichier a écrasé pour la nouvelle branche.

Maintenant, exécutez les commandes suivantes pour vérifier le contenu du basique.py fichier après le passage au principal bifurquer.

$ git Checkout Main
$ Cat Basic.py

La sortie suivante montre que le contenu du basique.py est resté inchangé.

Conclusion:

Le problème de tirer le référentiel GIT avec force et comment résoudre ce problème a été expliqué dans ce tutoriel en utilisant un référentiel de démonstration local et distant. Mais cette solution ne fonctionnera pas pour les changements non engagés du référentiel local. Vous devez donc commettre toutes les modifications ou exécuter le 'git cachette' commande avant de tirer avec force le référentiel GIT.