132 votes

Comment pousser une nouvelle branche sans historique

J'ai un repo git avec deux branches non liées, master et configs. J'ai créé configs, purgé tous les fichiers et ensuite placé dans les fichiers de configuration uniquement. Maintenant, je veux pousser cela sur un repo distant, mais comme s'il s'agissait d'une nouvelle branche vide (sans les journaux de toutes mes modifications et les anciennes révisions de la branche originale).

Comment puis-je purger tout l'historique et le pousser ?

194voto

jszakmeister Points 8323

Purger tous les fichiers ne permet pas de se débarrasser de l'historique. Vous devez d'abord créer une branche qui n'a pas d'historique, puis ajouter vos fichiers de configuration. Ces jours-ci git checkout a un --orphan qui crée une branche sans historique. Voici les informations sur l'option --orphan opción:

--orphan <nouvelle_branche>

Créez une nouvelle branche orpheline, nommée <nouvelle_branche>, démarrée à partir de <start_point> et basculez dessus. Le premier commit effectué sur cette nouvelle branche n'aura pas de parents et il sera la Racine d'un nouvel historique totalement déconnecté de toutes les autres branches et commits.

L'index et l'arbre de travail sont ajustés comme si vous aviez précédemment exécuté "git checkout <start_point>". Cela vous permet de commencer un nouvel historique qui enregistre un ensemble de chemins similaires à <début_point> en exécutant facilement "git commit -a" pour faire le commit racine.

Cela peut être utile lorsque vous voulez publier l'arbre d'un commit sans exposer son historique complet. Vous pourriez vouloir faire cela pour publier une branche open source d'un projet dont l'arbre actuel est "propre", mais dont l'historique complet contient des morceaux de code propriétaires ou autrement encombrés.

Si vous voulez démarrer un historique déconnecté qui enregistre un ensemble de chemins totalement différent de celui de <start_point>, alors vous devez effacer l'index et l'arbre de travail juste après avoir créé la branche orpheline en exécutant "git rm -rf ." depuis le niveau supérieur de l'arbre de travail. Ensuite, vous serez prêt à préparer vos nouveaux fichiers, en repeuplant l'arbre de travail, en les copiant d'ailleurs, en extrayant une archive, etc.

Voici un lien vers la documentation pour caisse . Vous pouvez également exécuter git help checkout également.

Une fois que vous aurez créé votre branche sans historique, lorsque vous la pousserez vers le serveur, elle n'aura pas non plus d'historique. FWIW, ça m'aide de penser à git push comme "faire en sorte que la branche distante ait la même apparence que ma branche locale". Donc si vous avez un historique, et que vous poussez, il y aura un historique. Si vous ne l'avez pas, alors la branche poussée ne l'aura pas.

57voto

Geremia Points 162

Comment puis-je purger tout l'historique et le pousser ?

git checkout --orphan <name_you_choose_for_orphan_branch>
git commit

Ensuite, vous pouvez exécuter votre

git push <remote-name> <branch-name>

cf. cette phrase

19voto

ThinkBonobo Points 258

J'avais besoin de faire cela pour envoyer un code à un freelance sans partager d'informations privées ni effacer mon historique.

Au cas où l'un d'entre vous utiliserait SourceTree, voici comment j'ai réussi à le faire. Veuillez me faire savoir si j'ai fait quelque chose de mal ou si j'ai oublié quelque chose, car je ne suis pas très familier avec la gestion du contrôle de la source.

  1. Je suis allé sur le bouton terminal de l'arbre des sources.
  2. J'ai créé une nouvelle branche 'orpheline' en utilisant la commande : 'git checkout --orphan clean-ver' où clean-ver est le nom de ma branche.
  3. J'ai fermé le terminal et j'ai vu que mon journal de commit était effacé parce que j'étais dans une nouvelle branche orpheline. J'ai mis en scène tout mon code source et j'ai validé les changements.
  4. J'ai configuré mon dépôt bitbucket soit par dépôt>addition à distance, soit par dépôt>paramètres du dépôt>addition.
  5. Je l'ai fermé, et j'ai cliqué sur le bouton "pousser".
  6. J'ai sélectionné ma nouvelle branche 'clean-ver' et j'ai dit ok.

Lorsque j'ai vérifié bitbucket, il semble que cela ait fonctionné et que l'historique de mes commits ait été supprimé.

J'espère que cela aidera quelqu'un.

3voto

OLAWALE JUWON Points 171
git checkout --orphan <name_you_choose_for_orphan_branch>
git rm . -r -f

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X