Comment supprimer une branche localement?

159

J'ai un master et une branche dev dans mon référentiel. Je veux supprimer la branche master de mon ordinateur pour ne pas m'y engager accidentellement (c'est arrivé ..).

Il y a des questions ici sur la façon de supprimer des branches localement et à distance, mais je n'ai pas été en mesure de savoir comment supprimer uniquement une branche localement.

Une réponse a dit d'utiliser ceci:

git branch -d local_branch_name

Mais j'ai essayé cela et la branche apparaît toujours dans l'application GitHub.

Nate
la source
Quelle est la sortie de cette commande? Dans quelle branche êtes-vous? Comment cela apparaît-il dans la console?
SLaks
@SLaks J'avais un type dans ma question. Dans la console, il indique en fait que la branche a été supprimée, mais dans l'application GitHub (même après l'avoir redémarrée), la branche et le commit sont toujours visibles. La sortie estDeleted branch master (was e8a8e29).
Nate
GitHub pour Windows affiche également les branches distantes
SLaks
@SLaks Donc, après avoir supprimé la branche localement, si je clique dessus dans l'application GitHub pour Windows, est-ce juste la re-clonage? Je veux m'empêcher de pouvoir apporter des modifications directement à la branche principale.
Nate

Réponses:

114

Je pense (sur la base de vos commentaires) que je comprends ce que vous voulez faire: vous voulez que votre copie locale du référentiel n'ait ni la branche locale ordinaire master, ni la branche de suivi à distance origin/master, même si le référentiel que vous avez cloné - celui de github —A une branche locale masterque vous ne voulez pas supprimer de la version github.

Vous pouvez le faire en supprimant la branche de suivi à distance localement, mais elle reviendra simplement chaque fois que vous demanderez à votre git de synchroniser votre référentiel local avec le référentiel distant, car votre git demande à son git «quelles branches avez-vous» et il dit "j'ai master" donc votre git (re) créeorigin/master pour vous, afin que votre dépôt ait ce qu'il a.

Pour supprimer votre branche de suivi à distance localement à l'aide de l'interface de ligne de commande:

git branch -d -r origin/master

mais encore une fois, il reviendra juste sur les resynchronisations. Il est également possible de vaincre cela (en utilisant la remote.origin.fetchmanipulation), mais il vaut probablement mieux être suffisamment discipliné pour ne pas créer ou modifier masterlocalement.

Torek
la source
En relation: Comment cloner une seule branche dans git?
Tobias Kienzler
99

Forcer la suppression de la branche locale:

$ git branch -D <branch_name>

[ REMARQUE ]:

"-D" est l'option de suppression forcée.


Benyamin Jafari
la source
6
Si je supprime une branche locale qui avait un ensemble en amont et que je fais un push normal, cela ne supprimera pas la branche distante, n'est-ce pas?
Fueled By Coffee
1
@FueledByCoffee Voici la réponse à cette question
Benyamin Jafari
17

Pour autant que je puisse comprendre le problème d'origine, vous avez ajouté des commits au maître local par erreur et n'avez pas encore poussé ces changements. Vous souhaitez maintenant annuler vos modifications et espérer supprimer vos modifications locales et créer une nouvelle branche principale à partir de la branche distante.

Vous pouvez simplement réinitialiser vos modifications et recharger le maître à partir du serveur distant:

git reset --hard origin/master
Eugène Kaurov
la source
13

L'application Github pour Windows affiche toutes les branches distantes d'un référentiel. Si vous avez supprimé la branche localement avec $ git branch -d [branch_name], la branche distante existe toujours dans votre référentiel Github et apparaîtra malgré tout dans l'application Windows Github.

Si vous souhaitez supprimer complètement la branche (également à distance), utilisez la commande ci-dessus en combinaison avec $ git push origin :[name_of_your_new_branch]. Attention: cette commande efface toutes les branches existantes et peut entraîner une perte de code. Attention, je ne pense pas que ce soit ce que vous essayez de faire.

Cependant, chaque fois que vous supprimez les modifications de branche locale, la branche distante apparaîtra toujours dans l'application. Si vous ne souhaitez pas continuer à apporter des modifications, ignorez-les et ne cliquez pas, sinon vous risquez de cloner le référentiel. Si vous avez d'autres questions, n'hésitez pas à me le faire savoir.


la source
1

vous devez basculer dans une autre branche et essayer la même chose.

git branche -d

Kumar Vaduganathan
la source
1
Est-ce censé être une réponse? Ou une question de clarification? Ou une simple question? C'est si court que je ne peux pas le dire. Souhaitez-vous élaborer?
Yunnosch
0

Par vos balises, je suppose que vous utilisez Github. Pourquoi ne pas créer des règles de protection de branche pour votre branche principale? De cette façon, même si vous essayez de pousser pour maîtriser, cela le rejettera.

1) Accédez à l'onglet "Paramètres" de votre dépôt sur Github.

2) Cliquez sur «Branches» dans le menu de gauche.

3) Cliquez sur "Ajouter une règle"

4) Entrez «master» pour un modèle de branche.

5) Cochez "Exiger des révisions de demande d'extraction avant la fusion"

Je recommanderais également de faire de même pour votre branche de développement.

Qamar Stationwala
la source