Comment annuler la commande git fetch'
J'ai juste ajouté des remote A
à mon repo B
puis exécutez git fetch A
Comment puis-je annuler chercher? Si je viens de supprimer remote A
: git remote remove A1
serait-il annuler chercher?
Mise à JOUR:
git remote add A path/to/A
git fetch A
Ci-dessus est commandes que j'ai donc exécuter dans le résultat que j'ai obtenu toutes les branches par les cheveux de mon repo B
cependant j'ai juste besoin d'une branche spécifique de repo A
et j'ai besoin d'elle pour aller dans le dossier spécifique sur repo B
mais c'est une autre histoire Code de fusion entre les deux différents dépôts git
Pourquoi voulez-vous annuler l'extraction?
aussi, en cas de doute, vous pouvez l'essayer. retrait d'une distance ne va pas casser quelque chose.
Veux juste le nettoyage de tout porté à mon repo
pour ma compréhension extraction est en apportant des fichiers sur mon repo
pour vous garder au local des pensions de mise à jour. Git est un DVCS. Il s'appuie sur chacun d'avoir la dernière copie de la mise en pension. De cette façon, les sauvegardes ne sont pas nécessaires comme tout le monde qui a cloné le repo a une sauvegarde.
aussi, en cas de doute, vous pouvez l'essayer. retrait d'une distance ne va pas casser quelque chose.
Veux juste le nettoyage de tout porté à mon repo
pour ma compréhension extraction est en apportant des fichiers sur mon repo
.git
alors pourquoi aurais-je besoin d'eux, assis là, si je ne veux pas fusionnerpour vous garder au local des pensions de mise à jour. Git est un DVCS. Il s'appuie sur chacun d'avoir la dernière copie de la mise en pension. De cette façon, les sauvegardes ne sont pas nécessaires comme tout le monde qui a cloné le repo a une sauvegarde.
OriginalL'auteur sreginogemoh | 2016-02-24
Vous devez vous connecter pour publier un commentaire.
Vous pouvez annuler tous extrait de distance
A
simplement par la suppression de cette distance:Maintenant, il suffit de l'ajouter de nouveau et de récupérer en une seule branche:
OriginalL'auteur qzb
Il est difficile1 "annuler" un
git fetch
, mais il n'est jamais2 aucune raison de besoin pour annuler unegit fetch
.N'oubliez pas, ce
git fetch
ne fait qu'appeler la télécommande, d'obtenir une liste de branche-nom de SHA-1 mappages, d'apporter les livraisons et d'autres objets dont vous avez besoin pour stocker dans votre référentiel, et ensuite mettre à jour votre télécommande-suivi des branches de manière à ce qu'ils pointent à la distance actuelle (au moment où vous venez maintenant téléphoné), des conseils de branche. Cela n'a aucun effet sur votre travail-de l'arborescence de fichiers, et si vous exécutezgit fetch
de nouveau demain, tout le travail fait aujourd'hui peut être ignorée demain. Si vous ne gérer pour annuler lafetch
, l'un de demain sera à refaire le travail accompli aujourd'hui, c'est donc une perte nette: vous venez juste de passer un peu d'effort de sorte que votre git devront apporter le plus de code sur le réseau de demain.Cela dit, le temps pour les notes de bas de page. 🙂
1Ce n'est pas que difficile, si vous avez à distance reflogs (dont vous n'avez probablement): il suffit d'utiliser la télécommande reflogs de trouver à distance de suivi des branches de mise à jour la plus récente fetch—mêmes informations peuvent également être disponibles dans le
FETCH_HEAD
de fichier et d'utiliser ensuitegit update-ref
au point ces références de retour à leur précédente reflog entrées. Mais cela laissera extraites des objets dans votre référentiel, donc pour vraiment effacer, vous devez également supprimer les intermédiaires reflog entrées, puis exécutezgit gc --prune=now
, ce qui nécessite beaucoup de soins et jetez la tous non référencées objets, pas seulement ceux apportés par les plus récentesfetch
.2je pense que l'on pourrait faire valoir que "de manquer d'espace disque" pourrait être une raison pour le faire, surtout si un objet de grande taille a été accidentellement poussé à la distance et sera supprimée à partir de la télécommande par la prochaine
fetch
. De travail dans un système de fichiers qui est hors de l'espace est délicat en général, cependant, et je ne suis pas sûr que je voudrais faire ici autre que déplacer l'ensemble du référentiel ailleurs (quelque part, sans les problèmes d'espace disque).OriginalL'auteur torek
J'ai vraiment aimé la réponse de torek, mais il ne vous fournit pas de commande "mise à jour reflogs", ce qui est exactement ce que je cherchais. J'ai trouvé cela dans d'autres réponse inverse d'un git fetch, je viens donc de le laisser ici pour simplifier la recherche pour les autres.
Supposons que vous avez votre
origin
à distance et localdevelop
direction générale est basée surmaster
, mais votre localmaster
est derrièreorigin/master
(mais vous ne le voyez pas encore, parce que vous n'avez pas récupéréorigin
encore). Donc exécuter desgit fetch
va ajouter de nouveaux commits deorigin/master
et des tags à vos locaux repo. Dans certains cas, vous ne voulez pas voir ces nouveaux commits et réduire la lisibilité de votre histoire.Après avoir dit que, vous pouvez l'annuler "
git fetch
par:Tout ce qu'il fait est juste changements
origin/master
pointeur à l'état précédent. Peut-être que vous aurez à jouer avec {n} un peu pour obtenir exact de l'état, mais en général, il peut aider.OriginalL'auteur The Godfather
Vous pouvez supprimez toutes les branches vous avez accidentellement par les cheveux que vous ne voulez pas continuer avec la commande suivante:
git update-ref -d refs/remotes/YOUR_REMOTE_NAME/BRANCH_NAME_TO_DELETE
Pour les empêcher d'être récupéré, votre git distant de seulement chercher spécifié branches:
git remote set-branches YOUR_REMOTE_NAME desired_branch1 [desired_branch2, desired_branch3, etc]
, par exemplegit remote set-branches origin master
.Le comportement par défaut de l'ensemble des branches est de toujours remplacer la liste. Si vous voulez ajouter, utilisez le
--add
option:git remote set-branches --add origin another_branch
OriginalL'auteur Olimon F.