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:
depth
is het aantal commits dat je wilt opnemen. d.w.z. als je alleen de laatste commit wilt, gebruik dangit clone --depth 1
branch
is de naam van de remote branch waarvan u wilt klonen. d.w.z. als je de laatste 3 commits van demaster
branch wilt, gebruik dangit clone --depth 3 -b master
repo_url
is de url van uw repository
Antwoord 3, autoriteit 10%
Het verwijderen van de map .git
is 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 .git
en 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.