Comment rejeter les commits locaux en Git?

je travaillais sur quelque chose, et j'ai décidé que c'était complètement foutu...après en avoir commis une partie. J'ai donc essayé la séquence suivante:

git reset --hard
git rebase origin
git fetch
git pull
git checkout

où j'ai eu le message

Your branch is ahead of 'origin/master' by 2 commits.

je veux me débarrasser de mes commits locaux , sans avoir à effacer mon répertoire local et tout recharger. Comment puis-je le réaliser?

185
demandé sur Daniel C. Sobral 2010-10-07 18:20:53
la source

6 ответов

git reset --hard origin/master

supprimera toutes les commits non dans origin/masterorigin est le nom de la banque et master est le nom de la succursale.

422
répondu mipadi 2015-09-03 14:15:45
la source

de côté, outre la réponse de mipadi (qui devrait marcher d'ailleurs), il faut savoir que faire:

git branch -D master
git checkout master

fait aussi exactement ce que vous voulez sans having to redownload everything (votre citation paraphrasée). C'est parce que votre repo local contient une copie du repo distant (et cette copie n'est pas la même que votre répertoire local, elle n'est même pas la même que votre branche cochée).

éliminer une branche est parfaitement sûr et la reconstruction de cette branche est très rapide et ne nécessite aucun trafic réseau. Rappelez-vous, git est avant tout un repo local. Même les branches éloignées ont une copie sur le local. Il n'y a qu'un peu de métadonnées qui indique à git qu'une copie locale est en fait une branche distante. Dans git, tous les fichiers sont sur votre disque dur tout le temps.

si vous n'avez pas d'autres branches que le maître, vous devez:

git checkout -b 'temp'
git branch -D master
git checkout master
git branch -D temp
26
répondu slebetman 2018-03-30 16:43:13
la source

ce que je fais, c'est essayer de redémarrer à fond. Cela effacera toutes les propagations locales:

git reset --hard HEAD^
7
répondu giang nguyen 2017-12-12 12:54:56
la source

vous devez exécuter

git fetch

pour obtenir tous les changements et alors vous ne recevrez pas de message avec"votre branche est en avance".

4
répondu Володимир Пасіка 2017-10-30 05:39:10
la source

j'ai vu des cas où la télécommande était désynchronisée et devait être mise à jour. Si un reset --hard ou un branch -D ne fonctionne pas, essayez

git pull origin
git reset --hard 
0
répondu Jim Clouse 2013-04-04 21:13:33
la source

j'ai dû faire :

git checkout -b master

comme Git a dit qu'il n'existe pas, parce qu'il a été essuyé avec le

git -D master
0
répondu ramp 2014-03-05 16:00:51
la source

Autres questions sur git git-reset