Git Force Pull
Dans ce didacticiel, nous allons apprendre à extraire avec force les modifications du référentiel distant dans Git.
Parfois, nous devrons peut-être ignorer les modifications locales et les remplacer par des mises à jour du référentiel distant dans un environnement de développement collaboratif.
Nous utilisons la commande git pull
pour récupérer les modifications du référentiel distant vers la branche locale du référentiel local.
La commande git pull
ne réussira que si les modifications dans la branche locale sont à l’origine des modifications dans le référentiel distant.
Si les modifications de la branche locale et du référentiel distant ont divergé et si nous souhaitons annuler les modifications locales, nous devons forcer un git pull
pour écraser les modifications locales,
Nous allons maintenant développer cela avec un exemple.
Utiliser git fetch
, git reset
et git merge
pour effectuer une extraction forcée des modifications à distance dans Git
La commande git pull
n’est pas une opération unique. La commande git pull
exécute la commande viz. git fetch
pour récupérer les données du référentiel distant, puis la commande git merge
pour fusionner ces modifications dans le référentiel local.
La commande git pull
exécute donc les deux commandes comme suit.
$ git fetch
$ git merge origin/$CURRENT_BRANCH
La commande git fetch
télécharge les dernières modifications depuis le référentiel distant. Il ne fait aucune merge
ou rebase
du référentiel local.
La commande git merge
donnée ci-dessus fusionne les changements du dépôt distant, donnés par l’alias origin
, qui ont été ajoutés au $CURRENT_BRANCH
, qui ne sont pas déjà présents dans la branche locale du dépôt local.
Ainsi, le git pull
échouera si la branche locale dans le dépôt local est divergente de la branche dans le dépôt distant.
Nous avons peut-être apporté des modifications locales aux fichiers dans l’arborescence de travail de la branche locale. Ainsi, cela provoque l’échec du git pull
.
Nous pouvons maintenant décider de rejeter les modifications locales en faveur des modifications du référentiel distant.
Ainsi, nous devons extraire avec force les modifications qui écraseront les modifications locales.
Nous devons procéder comme suit pour obtenir une traction énergique des modifications à distance.
$ git fetch
$ git reset --hard HEAD
$ git merge origin/$CURRENT_BRANCH
La commande git reset
avec l’option --hard
réinitialisera la branche à ce que nous venons de récupérer. Il supprimera également toutes les modifications locales apportées aux fichiers suivis et les fichiers non suivis seront supprimés.
Par conséquent, utilisez-le avec prudence, car toutes les modifications locales seront perdues.
Alternativement, nous pouvons enregistrer les modifications locales avant de tirer les modifications. Nous pouvons stocker les modifications en utilisant git stash
avec l’extraction des modifications.
Nous pouvons faire comme suit.
$ git fetch
$ git stash
$ git merge origin/$CURRENT_BRANCH
$ git stash pop
Ainsi, lorsque nous utilisons git stash
, nous n’avons plus besoin de faire un git reset
de la branche locale du dépôt local.
Nous avons utilisé le git stash pop
pour obtenir des modifications locales de la réserve.
Article connexe - Git Pull
- Différence entre Git Fetch et Git Pull
- Extraire les modifications d'une autre branche dans Git
- Extraire les modifications d'une branche spécifique dans Git
- Git Pull Master dans la branche
- Remplacer les modifications locales dans Git
- Créer une demande d'extraction à partir de la ligne de commande dans Git