web-dev-qa-db-fra.com

Copier un repo git sans historique

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 souhaite pas rendre publiques (informations d'identification codées en dur, etc.).

Quel est le moyen le plus facile de rendre public le dernier commit (je n'ai pas vraiment besoin ou ne veux pas que les précédents soient validés dans le référentiel public) sans inclure tout ou partie de l'historique des commit?

154
Rafe

Vous pouvez limiter la profondeur de l’historique avec clonage :

--depth <depth>
Create a shallow clone with a history truncated to the specified 
number of revisions.

Utilisez ceci si vous voulez un historique limité, mais quand même.

242
Gauthier

Utilisez la commande suivante:

git clone --depth <depth> -b <branch> <repo_url>

Où:

  • depth est le nombre de commits que vous souhaitez inclure. c'est-à-dire si vous voulez seulement utiliser la dernière validation, utilisez git clone --depth 1
  • branch est le nom de la branche distante à partir de laquelle vous voulez cloner. c'est-à-dire si vous voulez les 3 derniers commits de la branche master, utilisez git clone --depth 3 -b master
  • repo_url est l'URL de votre dépôt
210
Agam Rafaeli

La suppression du dossier .git est probablement le chemin le plus simple puisque vous ne voulez pas/n’avez pas besoin de l’historique (comme l’a dit Stephan).

Ainsi, vous pouvez créer un nouveau dépôt à partir de votre dernier commit: ( Comment cloner un projet seed/kick-start sans l'historique complet? )

git clone <git_url>

puis supprimez .git et exécutez ensuite

git init

Ou si vous souhaitez réutiliser votre référentiel actuel: Faites-vous le commit actuel comme seul commit (initial) dans un référentiel Git?

Suivez les étapes ci-dessus puis:

git add .
git commit -m "Initial commit"

Poussez à votre repo.

git remote add Origin <github-uri>
git Push -u --force Origin master
7
J W
#!/bin/bash
set -e

# Settings
user=xxx
pass=xxx
dir=xxx
repo_src=xxx
repo_trg=xxx
src_branch=xxx

repo_base_url=https://$user:[email protected]/$user
repo_src_url=$repo_base_url/$repo_src.git
repo_trg_url=$repo_base_url/$repo_trg.git

echo "Clone Source..."
git clone --depth 1 -b $src_branch $repo_src_url $dir

echo "CD"
cd ./$dir

echo "Remove GIT"
rm -rf .git

echo "Init GIT"
git init
git add .
git commit -m "Initial Commit"
git remote add Origin $repo_trg_url

echo "Push..."
git Push -u Origin master
6
timo kranz