Existe-t-il un moyen de faire un git pull
qui ignore toutes les modifications de fichiers locaux sans faire sauter le répertoire et sans avoir à effectuer un git clone
?
rm -rf local_repo && git clone remote_url
.
Existe-t-il un moyen de faire un git pull
qui ignore toutes les modifications de fichiers locaux sans faire sauter le répertoire et sans avoir à effectuer un git clone
?
rm -rf local_repo && git clone remote_url
.
Réponses:
Si vous voulez dire que vous voulez que l'écrasement écrase les modifications locales, en faisant la fusion comme si l'arbre de travail était propre, eh bien, nettoyez l'arbre de travail:
git reset --hard
git pull
S'il existe des fichiers locaux non suivis, vous pouvez les utiliser git clean
pour les supprimer. Permet git clean -f
de supprimer les fichiers non suivis, -df
de supprimer les fichiers et répertoires non -xdf
suivis et de supprimer les fichiers ou répertoires non suivis ou ignorés.
Si, d'autre part, vous souhaitez conserver les modifications locales d'une manière ou d'une autre, vous devez utiliser la cachette pour les cacher avant de les tirer, puis les réappliquer ensuite:
git stash
git pull
git stash pop
Je ne pense pas que cela ait un sens d' ignorer littéralement les changements, cependant - la moitié de la traction est la fusion, et il doit fusionner les versions validées du contenu avec les versions qu'il a récupérées.
git reset
vos fichiers diffèrent encore de la télécommande, lisez stackoverflow.com/questions/1257592/…
git reset --hard
affecte les premiers, pas les seconds. Si vous souhaitez réinitialiser complètement l'état de la télécommande, git reset --hard origin/<branch>
- mais souvent et dans ce cas, ces deux validations que vous êtes en avance sur votre travail sont des tâches que vous avez faites, pas quelque chose que vous souhaitez jeter.
Pour moi, ce qui suit a fonctionné:
(1) Commencez par récupérer toutes les modifications:
$ git fetch --all
(2) Réinitialisez ensuite le maître:
$ git reset --hard origin/master
(3) Pull / mise à jour:
$ git pull
Vous voulez juste une commande qui donne exactement le même résultat que rm -rf local_repo && git clone remote_url
, non? Je veux aussi cette fonctionnalité. Je me demande pourquoi git ne fournit pas une telle commande (comme git reclone
ou git sync
), ni svn ne fournit une telle commande (comme svn recheckout
ou svn sync
).
Essayez la commande suivante:
git reset --hard origin/master
git clean -fxd
git pull
git clean -fxd
supprime également les fichiers .gitignore
.
La commande ci-dessous ne fonctionnera pas toujours . Si vous faites juste:
$ git checkout thebranch
Already on 'thebranch'
Your branch and 'origin/thebranch' have diverged,
and have 23 and 7 different commits each, respectively.
$ git reset --hard
HEAD is now at b05f611 Here the commit message bla, bla
$ git pull
Auto-merging thefile1.c
CONFLICT (content): Merge conflict in thefile1.c
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
etc...
Pour vraiment recommencer, télécharger la branche et écraser toutes vos modifications locales, faites simplement:
$ git checkout thebranch
$ git reset --hard origin/thebranch
Cela fonctionnera très bien.
$ git checkout thebranch
Already on 'thebranch'
Your branch and 'origin/thebranch' have diverged,
and have 23 and 7 different commits each, respectively.
$ git reset --hard origin/thebranch
HEAD is now at 7639058 Here commit message again...
$ git status
# On branch thebranch
nothing to commit (working directory clean)
$ git checkout thebranch
Already on 'thebranch'
Regardez git stash pour mettre toutes vos modifications locales dans un "fichier stash" et revenir au dernier commit. À ce stade, vous pouvez appliquer vos modifications cachées ou les supprimer.
Si vous êtes sous Linux:
git fetch
for file in `git diff origin/master..HEAD --name-only`; do rm -f "$file"; done
git pull
La boucle for supprimera tous les fichiers suivis qui sont modifiés dans le référentiel local, donc git pull
fonctionnera sans aucun problème.
La chose la plus agréable à ce sujet est que seuls les fichiers suivis seront écrasés par les fichiers du dépôt, tous les autres fichiers resteront intacts.
cela a fonctionné pour moi
git fetch --all
git reset --hard origin/master
git pull origin master
avec la réponse acceptée, j'obtiens des erreurs de conflit
Je fais habituellement:
git checkout .
git pull
Dans le dossier racine du projet.
.gitignore
"L'ajout de fichiers indésirables à .gitignore fonctionne tant que vous ne les avez initialement pas engagés dans une branche."
Vous pouvez également exécuter:
git update-index --assume-unchanged filename
https://chamindac.blogspot.com/2017/07/ignoring-visual-studio-2017-created.html