Kopieer een git repo zonder geschiedenis

Ik heb een privé-repository op GitHub die ik openbaar wil maken. Sommige van de initiële commits bevatten echter informatie die ik niet openbaar wil maken (hard-coded referenties, enz.).

Wat is de gemakkelijkste manier om de laatste commit openbaar te maken (ik heb de vorige commits niet echt nodig of wil ze in de openbare repository) zonder een deel of de hele commit-geschiedenis op te nemen?


Antwoord 1, autoriteit 100%

Je kunt de diepte van de geschiedenis beperken terwijl je klonen:

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

Gebruik dit als je een beperkte geschiedenis wilt, maar toch wat.


Antwoord 2, autoriteit 90%

Gebruik het volgende commando:

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

Waar:

  • depthis het aantal commits dat je wilt opnemen. d.w.z. als je alleen de laatste commit wilt, gebruik dan git clone --depth 1
  • branchis de naam van de remote branch waarvan u wilt klonen. d.w.z. als je de laatste 3 commits van de masterbranch wilt, gebruik dan git clone --depth 3 -b master
  • repo_urlis de url van uw repository

Antwoord 3, autoriteit 10%

Het verwijderen van de map .gitis waarschijnlijkhet gemakkelijkste pad omdat je de geschiedenis niet wilt/nodig hebt (zoals Stephan zei).

Je kunt dus een nieuwe repo maken van je laatste commit:
(Hoe seed/kick-start project te klonen zonder de hele geschiedenis?)

git clone <git_url>

verwijder vervolgens .giten voer daarna uit

git init

Of als u uw huidige repo opnieuw wilt gebruiken:
Maak van de huidige commit de enige (initiële ) commit in een Git-repository?

Volg de bovenstaande stappen dan:

git add .
git commit -m "Initial commit"

Push naar je repo.

git remote add origin <github-uri>
git push -u --force origin master

Antwoord 4

#!/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

Antwoord 5

Je zou de GitHub-repository als sjabloon kunnen instellen (door naar instellingen te gaan en de optie net onder de repositorynaam te selecteren). Een knop met de tekst “Gebruik deze sjabloon” verschijnt dan op de codepagina. Dit kopieert alle bestanden maar verwijdert alle geschiedenis en als u de originele repo als privé houdt, toont dit geen details onder de repo-naam (merk op dat deze op uw site wordt weergegeven als u beide bezit, maar niet voor iemand anders) . Alleen als de repo openbaar is, verschijnt er een link naar de originele repo onder de reponaam.

Other episodes