Giteest un moyen fantastique d'implémenter le contrôle de version dans un projet de codage - si fantastique, en fait, que c'est presque l'option obligatoire.
L'idée est de créer des branches en double de votre référentiel principal, de travailler sur le code, puis de fusionner les modifications avec le reste. Cela signifie que vous aurez beaucoup d'anciennes branches dans votre dépôt. Bien que la taille de ces fichiers soit souvent petite, vous souhaiterez toujours effectuer unegit supprimer
sur une succursale locale pour garder les choses en ordre.
La bonne nouvelle est que cela ne demande pas beaucoup d'efforts. Cependant, vous devrez considérer la meilleure approche selon que vous fusionnez les modifications, ainsi que ce qu'il faut faire si vous obtenez une erreur lors du processus de suppression. Vous devrez peut-être même restaurer une branche que vous supprimez. Chacun de ces scénarios nécessite des compétences et des commandes différentes.
Dans ce tutoriel, nous allons vous montrer comment effectuer un git delete sur une branche locale. Cependant, nous allons d'abord parler de certaines des raisons pour lesquelles vous pourriez vouloir supprimer des branches locales dans Git.
Qu'est-ce qu'une branche Git ?
Dépôts Gitsont une collection de branches - des doublons du code de base à l'intérieur. En fait, vous ne pouvez pas avoir un référentiel Git fonctionnel sans branche.
Souvent, vous aurez un référentiel principal (les noms nominaux sont "principal" et "tronc"). Celui-ci contiendra un code de production fonctionnel que vous ne voudrez pas modifier. Au lieu de cela, vous allez créer une branche dupliquée du référentiel principal, puis effectuer les modifications dont vous avez besoin dans votre branche. Lorsqu'il sera temps de réintégrer ces modifications dans le code principal, vous les vérifierez et les fusionnerez.
Les branches permettent à tous les membres d'une équipe de collaborer sur le même projet, indépendamment les uns des autres. Il n'y a également aucun danger de modifier le code de travail ou d'intervenir sur d'autres modifications entre-temps.
Cependant, vous devrez également effectuer unegit supprimer
sur une succursale locale. Ce sera une action régulière pour vous, et il y a un certain nombre de bonnes raisons de le faire.
Pourquoi supprimer des branches dans Git ?
Votre code de production sera dans la branche principale. C'est la seule branche qui a une certaine permanence.
En revanche, presque toutes les autres branches que vous créez auront une durée de conservation temporaire. Une fois votre travail terminé, vous validerez les modifications, puis envisagerez de les fusionner avec la branche principale, éventuellement dans un référentiel en ligne.comme GitHub.
Cela signifie que vous aurez souvent de nombreuses succursales ouvertes en même temps, selon le projet et l'équipe. Cependant, une fois que vous avez finalisé la fusion, ces branches ne disparaissent pas.
En tant que tel, il y a plusieurs raisons pour lesquelles vous voudriez supprimer une branche Git locale :
- Ménage général :À la maison, lorsque vous finissez de cuisiner, vous lavez les ustensiles et vous les rangez. Il en va de même pour le travail avec un référentiel Git : lorsque vous avez terminé votre travail, vous fusionnez les modifications et supprimez toutes les branches dont vous n'avez plus besoin. Cela facilite également la navigation dans votre projet et votre référentiel.
- Taille du fichier de dépôt :Bien que les dépôts Git soient souvent suffisamment petits pour être sans conséquence sur la taille d'un projet, vous devez toujours garder un œil dessus. Une façon de réduire la taille d'un référentiel consiste à supprimer les branches dont vous n'avez pas besoin.
- Performances potentielles :Même si votre code principal est performant, une branche peut ne pas l'être, étant donné que vous y travaillez. Pour cette raison, vous voudrez garder les succursales ouvertes au minimum. Sinon, cela pourrait introduire de mauvaises performances pour votre équipe jusqu'à ce que vousmettre en scène et peaufinerun projet.
Comme vous le verrez plus tard, effectuer ungit supprimer
sur une branche locale est simple, pour la plupart. Cependant, c'est une bonne idée de comprendre ce qui se passe sous le capot lorsqu'il s'agit d'utiliser cette commande, car elle n'effacera pas tout ce qui concerne la branche de votre référentiel.
Que se passe-t-il lorsque vous supprimez une branche Git locale ?
Sur le plan technique, une branche n'est qu'un pointeur vers un commit spécifique - une section de code que vous souhaitez inclure dans votre branche principale. Pour cette raison, lorsque vous supprimez une branche Git locale, les commits restent.
Plus tard, nous parlerons de la récupération de branche et de ce qui est possible grâce à ces commits restant dans votre référentiel. Pour l'instant, comprenez qu'il existe deux types de changements différents :
- Modifications fusionnées :Une fois que vous avez fusionné une branche avec la principale, le code sera aussi à jour que possible. En termes techniques, cela revient à déplacer la référence de la branche principale pour rattraper votre branche secondaire.
- Modifications non fusionnées :Si vous ne fusionnez pas les modifications, vous aurez une branche qui n'est pas aussi à jour que la branche principale. En tant que telle, la branche principale n'aura pas de commit de référence à jour.
C'est quelque chose dont nous parlerons plus en détail plus tard. Quoi qu'il en soit, cela soulève un autre bon point sur le moment de supprimer des branches.
Quand effectuer un "Git Delete" sur une branche locale
Étant donné les dangers de la suppression d'une branche avec des modifications non fusionnées, il est important de ne pas exécuter ungit supprimer
sur une branche locale jusqu'à ce que vous procédiez à une fusion de codes. Cela garantira que chaque succursale dispose d'une référence à jour et, par extension, du code le plus récent disponible.
C'est aussi une bonne idée de s'assurer que vous n'aurez besoin d'aucun des commits dans une branche temporaire avant d'effectuer ungit supprimer
. Bien que vous puissiez récupérer des branches dans une certaine mesure, il s'agit d'un travail que vous ne voudrez pas effectuer si nécessaire. Nous vous donnerons un aperçu de cela plus tard.
Comment effectuer une "suppression Git" sur une branche locale
Dans la suite de ce didacticiel, nous vous montrerons comment effectuer ungit supprimer
sur une succursale locale. Nous parlerons également de ce qu'il faut faire avec les modifications non fusionnées.
À partir de là, nous parlerons des erreurs que vous pourriez voir, puis de la façon de restaurer une branche locale supprimée.
À la fin, nous examinerons brièvement les branches distantes et comment les supprimer également.
Conditions préalables
Git lui-même offre un ensemble simple de commandes et vous donne beaucoup de puissance sans avoir besoin d'ouvrir un manuel. Même ainsi, il existe plusieurs façons d'accéder à un référentiel Git en fonction de l'application et de l'éditeur de code que vous avez choisis.
Bien que vous puissiez trouver une configuration de "clic minimal" dans un espace dédiéinterface utilisateur graphique (GUI)tel queGitKrakenouFusion sublime, nous allons garder les choses simples et utiliser des outils intégrés au système d'exploitation.
Pour suivre, vous aurez besoin des éléments suivants :
- Accès à la ligne de commande :Nos exemples utiliseront macOS et iTerm. Cependant, vous pouvez utiliserCommandantpour Windows, le terminal par défaut sur macOS, le même sur Linux, etc.
- Accès à vos fichiers spécifiques :Vous voudrez avoir vos fichiers de projet sur votre ordinateur local, car sans eux, vous ne pouvez rien faire !
- Connaissance de la ligne de commande :Cela aidera à avoir quelquesconnaissance de la ligne de commande- plus précisément, les commandes pour vous aider à naviguer dans vos fichiers, ainsi qu'une certaine compréhension du fonctionnement de la ligne de commande.
En réalité, si vous avez un projet avec un référentiel Git et une fenêtre Terminal de votre choix, c'est tout ce dont vous avez besoin.
Effectuer une "suppression Git" de base
Tout d'abord, nous supposerons que vous souhaitez supprimer une branche avec des modifications fusionnées. C'est la pratique la plus simple et la plus typique.
Cependant, vous devrez peut-être exécuterbranche git -a
oubranche git --list
pour voir toutes les branches et trouver la bonne dans votre dépôt en premier :

Voici la commande dont vous aurez besoin pour supprimer une branche :
git branch -d nom-branche
Vous voudrez utiliser le nom de la branche spécifique plutôt que notre espace réservé.
Le-d
flag ici signifie "supprimer" et sous une forme minuscule, vous avez une certaine protection contre la suppression d'une branche avec des modifications non fusionnées.
Si vous essayez de supprimer une branche umerged, vous verrez une erreur (vraiment plus un avertissement) :

Cependant, vous pouvez mettre le drapeau en majuscule en utilisant-D
et ignorez cet avertissement de protection. Cela vous permet de supprimer une branche avec des modifications non fusionnées.
Notez que vous n'obtiendrez pas de confirmation pour supprimer la branche si vous utilisez la version en majuscule, c'est donc un drapeau que vous voudrez utiliser avec précaution.
Qu'est-ce qui cause l'erreur "Impossible de supprimer la branche" ?
Parce que la suppression d'une branche de votre référentiel est une décision importante sans résolution facile, Git génère des erreurs si vous faites une erreur.
Par exemple, vous irez parfois effectuer ungit supprimer
sur une branche locale et voir une erreur "Impossible de supprimer la branche":

Cette simple raison réside dans votre emplacement actuel dans le référentiel Git. Vous ne pouvez pas supprimer une branche que vous « consultez ».
La solution ici est de passer à une autre branche.
Pour cette raison, nous vous suggérons toujours de payer auprincipal
bifurquer. De cette façon, vous obtiendrez une erreur si vous essayez de supprimerprincipal
, et peut également effacer toute autre branche du référentiel.
Comment restaurer une branche Git locale supprimée
Étant donné qu'un commit restera après la suppression d'une branche locale, il existe une petite opportunité de récupérer une branche après avoir effectué unegit supprimer
. Cependant, c'est plus fastidieux que de fusionner ces modifications en premier. Dans cette situation, vous saurez que vous n'aurez plus besoin d'une succursale.
Chaque commit utilise un numéro de hachage, qui lui sert de référence. Vous pouvez utiliser ce hachage pour passer à la caisse et créer une nouvelle branche :

Cependant, si vous ne connaissez pas le hachage d'une branche supprimée, vous pouvez utiliser lereflog
commande. Ces "journaux de référence" ressemblent beaucoup à ceux que vous trouverez dans les applicationscomme DevKinsta.
Bien qu'utilisantgit reflog
est une conversation pour un autre article, vous pouvez utiliser les fonctionnalités de base pour trouver le hachage des anciens commits. Si tu coursgit reflog
, vous verrez une liste de commits :

La première colonne de hachages ici vous permet ensuite de vérifier le commit et de créer une nouvelle branche. Par exemple:
git paiement 5744ff6
branche git f9d2db5
Cependant, ce n'est pas un moyen infaillible de récupérer une branche supprimée dans Git.
Dans certains cas, il n'y aura pas de commit dans le reflog, et pas deDIRIGER
référence au commit lui-même. C'est pourquoi il est préférable de travailler avec vos branches de manière plus sûre en fusionnant les modifications avant d'effectuer unegit supprimer
sur une succursale locale.
Travailler avec des branches Git distantes
Lorsque vous effectuez unegit supprimer
sur une succursale locale, vous aurez souvent unréférentiel distant associé. Cela sera particulièrement vrai si vous réduisez votre site àKinsta utilise Git.
Cela ne sera pas mis à jour avec votre référentiel local lorsque vous apporterez des modifications, et cela est également vrai lorsque vous supprimez une branche locale.
Cependant, les deuxGitHub et GitLabont le même processus pour supprimer une branche Git distante. C'est une approche similaire à toute autre poussée "en amont".
Voici la commande :
git push nom-distant -d branche-distante
Pour lenom-distant
, la plupart des dépôts que nous voyons utilisent "origine". Lesuccursale à distance
référence sera la même que la succursale locale (sauf si vousrenommer une branche locale, ce qui dépasse le cadre de cet article.)
En passant, vous pouvez voir toutes les branches - locales et distantes - en utilisantbranche git -a
. Si vous voulez voir uniquement les succursales distantes, vous pouvez utiliserbranche git -r
.
Une fois que vous avez exécuté la commande, vous verrez un message de confirmation, à quel point vous devez exécuterbranche git -a
à nouveau pour vérifier que tout est supprimé comme prévu.
Résumé
Giteest l'un des rares outils qui vous donne un pouvoir immense sous le capot en utilisant des commandes lisibles et intuitives. Cela vaut également pour la suppression des branches dont vous n'avez plus besoin sur votre machine locale. Cependant, vous devrez toujours faire attention à exécuter un git delete sur une branche locale.
En effet, si vous essayez de supprimer des modifications non fusionnées, soit vous obtiendrez une erreur, soit vous supprimerez quelque chose qui aura un impact sur votre travail futur sur le projet. De plus, vous devrez également supprimer la branche distante. Vos dépôts locaux et distants nécessitent que vous effectuiez un bon entretien afin de maintenir des performances élevées et une taille de fichier minimale.
Bien que vous puissiez être seul si vous supprimez une branche Git par erreur, Kinsta vous protège en ce qui concerneHébergement d'applications. La plateforme d'hébergement Kinsta vous donne la possibilité deconnectez-vous et déployez avec vos référentiels GitHuben quelques minutes seulement. De plus, vous aurez accès aux machines C2 de Google etRéseau de niveau Premium, avec notreIntégration Cloudflare, pour pousser vos applications versniveau supérieur de vitesse et de sécurité.
FAQs
How to clean up deleted remote branches in git? ›
To completely remove a remote branch, you need to use the git push origin command with a -d flag, then specify the name of the remote branch. So the syntax representing the command for removing a remote branch looks like this: git push origin -d branch-name .
How do I remove old git branches from local? ›git branch is the command to delete a branch locally. -d is a flag, an option to the command, and it's an alias for --delete . It denotes that you want to delete something, as the name suggests. - local_branch_name is the name of the branch you want to delete.
How do I merge two branches? ›To do a merge (locally), git checkout the branch you want to merge INTO. Then type git merge <branch> where <branch> is the branch you want to merge FROM.
How do I delete a local branch if remote branch is deleted? ›Deleting a branch LOCALLY
Delete a branch with git branch -d <branch> . The -d option will delete the branch only if it has already been pushed and merged with the remote branch. Use -D instead if you want to force the branch to be deleted, even if it hasn't been pushed or merged yet. The branch is now deleted locally.
To delete commits from remote, you can use the git reset command if your commits are consecutive from the top or an interactive rebase otherwise. After you delete the commits locally, push those changes to the remote using the git push command with the force option.
What happens to deleted git branches? ›What Happens If I Delete a Git Branch? When you delete a branch in Git, you don't delete the commits themselves. That's right: The commits are still there, and you might be able to recover them.
How to remove deleted file from branch? ›- Check out the branch that you want to modify: git checkout <branch>
- Find the commit that introduced the file you want to remove: git log -- <file>
- Note the commit hash of the commit that introduced the file.
- Run the following command to start an interactive rebase: git rebase -i <commit hash>^
- git branch | grep -v "main" | xargs git branch -D.
- git branch | grep -v " main$" | xargs git branch -D.
- Open the the local Git repo's root folder.
- Delete all of the files and folder in the Git repo's root folder.
- Delete the hidden .git folder with File Explorer or through the command line.
- Run a git status command. A fatal: not a git repository error verifies that the Git repo is deleted.
- git fetch.
- git rebase origin/master.
- git checkout master.
- git pull origin master.
- git merge test.
- git push origin master.
How do I merge two branches without conflicts? ›
So commit * —the merge base of the proposed merge operation—is the best common commit, the best commit that's on both branches. The way merge works is to run two git diff s: The first compares the snapshot in commit * to that in commit A , to see what someone changed on that path.
Can I recover a deleted remote branch in git? ›There is no retention policy on deleted branches. A deleted Git branch can be restored at any time, regardless of when it was deleted.
How do I restore a remote deleted branch in github? ›Restoring a deleted branch
Under your repository name, click Pull requests. To see a list of closed pull requests, click Closed. In the list of pull requests, click the pull request that's associated with the branch that you want to restore. Near the bottom of the pull request, click Restore branch.
- Run 'git clean -n' to see a dry run;
- Run 'git clean -f' to force untracked file deletion;
- Use 'git clean -f -d' to remove untracked directories;
- Use 'git clean -f -x' to remove untracked . gitignore files; and.
- Add the -i switch to do an interactive 'git clean'.
To delete all branches in Git except main, simply replace the grep for master with a grep for main: git branch | grep -v "main" | xargs git branch -D.