J'ai actuellement un dépôt privé sur github que je veux rendre public. Cependant, certains des commits initiaux contiennent des informations que je ne veux pas rendre publiques (informations d'identification codées en dur, etc.).
Quelle est la voie la plus simple pour rendre public le dernier commit (je n'ai pas vraiment besoin ou ne veux pas les commits précédents dans le dépôt public) sans inclure tout ou partie de l'historique des commit?
Réponses:
Vous pouvez limiter la profondeur de l'historique lors du clonage :
Utilisez-le si vous voulez un historique limité, mais encore un peu.
la source
shallow update not allowed
.Utilisez la commande suivante:
Où:
depth
est le nombre de validations que vous souhaitez inclure. c'est à dire si vous voulez juste la dernière utilisation de commitgit clone --depth 1
branch
est le nom de la branche distante à partir de laquelle vous souhaitez cloner. c'est-à-dire si vous voulez que les 3 derniers commits proviennent de l'master
utilisation de la branchegit clone --depth 3 -b master
repo_url
est l'url de votre référentiella source
shallow update not allowed
. J'ai trouvé cette réponse de débordement de pile utile dans ce cas.La suppression du
.git
dossier est probablement le chemin le plus simple car vous ne voulez pas / n'avez pas besoin de l'historique (comme l'a dit Stephan).Vous pouvez donc créer un nouveau référentiel à partir de votre dernier commit: ( Comment cloner un projet de démarrage / démarrage sans l'historique complet? )
puis supprimez
.git
, puis exécutezOu si vous souhaitez réutiliser votre référentiel actuel: faire de la validation actuelle la seule validation (initiale) dans un référentiel Git?
Suivez ensuite les étapes ci-dessus:
Poussez vers votre repo.
la source
la source
--depth 1
n'est pas nécessaire dans ce cas car l'historique est également supprimé avecrm -rf .git
git clone --depth 1 -b $src_branch $repo_src_url $dir && cd ./$dir && git commit --amend --author "Some One <[email protected]>" -m "Initial Commit" && git remote set-url origin $repo_trg_url && git push -u origin master
--depth 1
c'est inutile, mais il est également inoffensif et il économise un peu de bande passante réseau (inutile de récupérer une histoire que vous êtes sur le point de supprimer de toute façon)N'est-ce pas exactement ce que fait l'écrasement d'un rebase? Écrasez tout, sauf le dernier commit, puis (forcez) le pousser.
la source