J'ai eu un problème avec git. J'ai un dépôt d'un projet qui vieillit et que je veux commencer une nouvelle version. J'ai créé une nouvelle branche (3.0-wip
) et supprimé les fichiers et dossiers pour recommencer. Cependant, si je passe en revue ma branche principale, les dossiers et les dossiers sont partis de là aussi. Comment puis-je avoir mon référentiel pour que ma branche maîtresse possède tout ce que le repo distant a, mais un répertoire de travail complètement différent dans mon 3.0-wip
que je peux modifier à mon goût sans détruire les fichiers et les dossiers dans une autre branche?Conserver une structure de répertoires différente dans différentes branches git
Répondre
Commité Les modifications dans une branche n'affectent pas une autre branche. Vous devez également valider toutes les suppressions, c'est ce que Dominic a essayé d'expliquer. Faites simplement:
$ git co $NEWBRANCH
$ git status
Et vous verrez des zillions de suppressions non validées. Vous devez utiliser git rm
pour supprimer des fichiers.
Vous n'êtes pas sûr que git add --all
gérera également les suppressions. Quoi qu'il en soit, ce n'est pas la meilleure façon de repartir à zéro car la nouvelle branche aura toujours l'ancienne histoire.
je pense qu'il est préférable de créer un nouveau "disconected" Commit:
- Créer une nouvelle prise en pension:
mkdir $DIR; cd $DIR; git init
- Créer la première validation.
touch README; git add --all; git commit -m "Init"
Allez maintenant à Repo d'origine et:
- Ajouter comme une télécommande:
git remote add start-anew $DIR/.git
- vient le chercher:
git fetch start-anew
- traction dans:
git co -b start-anew start-anew/master
Et voila une branche avec l'histoire fraîche et vide.
Vous pouvez ensuite supprimer la télécommande et également changer la télécommande pour la branche. Je suis en train d'éditer .git/config
manuellement, jusqu'à présent sans accident.
J'ai essayé de suivre cela, mais quand j'ai essayé d'aller chercher le dépôt 'start-anew', j'ai une erreur 'fatal: l'extrémité distante a raccroché de façon inattendue'. –
Fonctionne avec moi avec 'git version 1.7.6.4'? – Martian
Cela a fonctionné pour moi en poussant le dépôt 'start-anew' vers Github, puis en allant chercher à partir de là. Doit être quelque chose à faire avec essayer d'aller chercher sur ma machine locale. –
Qu'est-ce qui se passe, c'est que vous n'utilisez pas git correctement. Il n'y a absolument aucun problème avec la création d'une branche et la suppression de fichiers et de dossiers. Lorsque vous revenez à votre branche principale, les fichiers et dossiers supprimés sont restaurés, car ils n'ont pas été supprimés de cette branche. Qu'est-ce qui se passe dans votre cas, c'est que vous avez supprimé le fichier/dossiers de sous git, en utilisant la suppression du système d'exploitation, plutôt que la commande "git rm". C'est pourquoi l'état git les signale comme "supprimés". C'est aussi pourquoi les fichiers restent supprimés lorsque vous changez de branche. git s'attend à ce que les fichiers soient là et ils ne le sont pas. L'état Git vous demande d'exécuter "git add" mais cela ne fonctionne pas. Puisque le fichier n'est plus là, l'exécution de git add échouera silencieusement. Vous pourriez ne pas remarquer mais le message vous dit aussi de lancer "git rm". Vous pouvez penser que vous ne pouvez pas faire cela puisque le fichier est parti, mais ce n'est pas vrai. La commande rm parviendra toujours à supprimer le fichier du référentiel, même si vous l'avez déjà supprimé du système de fichiers.
L'autre chose que vous pouvez faire est de lancer git add -A. L'indicateur -A dira à ajouter pour remarquer tous les fichiers supprimés ou ajoutés.
Essayez ceci pour un test:
git init test-delete
cd test-delete
touch filea
mkdir dir_b
touch dir_b/fileb
git add .
git commit -m "Initial commit"
git checkout -b new_branch
rm -rf dir_b
git add -A
git commit -m "deleted files from branch"
(ls to prove files arent' there)
git checkout master
(ls to show files have been restored)
git checkout new_branch
(ls to show files are gone again)
- 1. Git - Stocke les branches dans des répertoires locaux distincts
- 2. GIT même repository différentes branches sur différentes machines
- 3. Branches Git avec des différences d'arborescence de répertoires
- 4. Git Branches sans tirer
- 5. Comment conserver deux sous-répertoires git synchronisés dans différents projets?
- 6. différentes versions de fichiers ignorés dans les différentes branches
- 7. GIT - comment conserver un fichier commun à toutes les branches
- 8. Comment les pages fonctionnent dans Git sur différentes branches?
- 9. comparaison de différentes versions dans GIT
- 10. branches connectées dans Git
- 11. Extraction dans une branche Git différente
- 12. GIT: Fusionner deux branches
- 13. Descriptions de branches dans git, suite
- 14. git pull alterne entre deux branches origine/master différentes
- 15. GIT CSS branches multiples, tant de conflits
- 16. synchronisation git de branches rebasées
- 17. Modification des chemins de dépendances lors du déploiement dans une structure de répertoires différente de
- 18. Essayer de comprendre Branches Git
- 19. Commandes git pratiques pour comparer/diff entre différentes branches
- 20. git pousser à différentes branches sur plusieurs télécommandes
- 21. Ignorer une chaîne de répertoires dans git?
- 22. tags vs branches dans git
- 23. Existe-t-il un moyen d'avoir différentes versions de bibliothèque JavaScript sur différentes branches de Git?
- 24. git fusionner entre branches
- 25. Git ignore les répertoires .git dans les sous-répertoires
- 26. Git Tags & Branches
- 27. git cleanup vieilles branches
- 28. Git Pas de branches distantes
- 29. Comment scinder commet automatiquement dans différentes branches?
- 30. Comment passer à une branche distante différente dans git
Avez-vous engager à votre branche 3.0-wip avant de vérifier à votre succursale maître? Sinon, c'est probablement le problème. –
J'ai cloné le repo externe. Création et extraction de la nouvelle branche '3.0-wip'. Fichiers/dossiers supprimés via le Finder. Créé le nouveau fichier 'index.php' et l'a validé. Si je vérifie ma branche 'master' alors les fichiers sont toujours partis, et' git status' montre tous les fichiers/dossiers comme 'deleted:'. –
Avez-vous ajouté git. | git ajouter -u avant votre commit? Comment avez-vous engagé ces changements dans votre branche 3.0-wip? –