web-dev-qa-db-fra.com

Comment supprimer une branche localement?

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

Il existe des questions sur la suppression de 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.

136
Nate

Je pense (en fonction de vos commentaires) que je comprends ce que vous voulez faire: vous voulez que votre copie locale du référentiel ne comporte ni la branche locale ordinaire master, ni la branche de télé-suivi Origin/master, même si le référentiel que vous avez cloné - celui de github - a une branche locale master que vous faites pas ne veut pas être supprimé de la version de github.

Vous pouvez le faire en supprimant localement la branche de suivi à distance, mais elle reviendra tout 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 à leur git "Quelles branches avez-vous" et le reste dit "j'ai master" afin que votre git (_) crée Origin/master pour vous, de sorte que votre référentiel 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 tout juste sur les resynchronisations. Il est possible de le vaincre aussi (en utilisant la manipulation remote.Origin.fetch,), mais il vaut probablement mieux que vous soyez discipliné pour ne pas créer ou modifiez master localement.

97
torek

Forcer la suppression de la branche locale:

$ git branch -D <branch_name>

[NOTE]:

"-D" est une option de suppression forcée.


72
Benyamin Jafari

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 indépendamment de 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 la branche locale, la branche distante apparaîtra toujours dans l'application. Si vous ne souhaitez pas continuer à apporter des modifications, ignorez-le et ne cliquez pas, sinon vous pouvez cloner le référentiel. Si vous avez d'autres questions, s'il vous plaît faites le moi savoir.

11
apoorvkh

Pour autant que je puisse comprendre le problème initial, vous avez ajouté des commits au maître local par erreur et n'avez pas encore poussé les 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
10
Eugene Kaurov

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 au maître, il le rejettera.

1) Allez sur 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 la case 'Exiger des révisions de la demande d'extraction avant la fusion'

Je recommanderais également de faire la même chose pour votre branche de dev.

0
Qamar Stationwala