Obecnie mam prywatne repozytorium na githubie, które chcę upublicznić. Jednak niektóre z początkowych zatwierdzeń zawierają informacje, których nie chcę upubliczniać (twarde kody itp.).
Jaka jest najłatwiejsza droga do upublicznienia ostatniego zatwierdzenia (tak naprawdę nie potrzebuję ani nie chcę poprzednich zatwierdzeń w publicznym repozytorium) bez uwzględnienia części lub całej historii zatwierdzeń?
Odpowiedzi:
Możesz ograniczyć głębokość historii podczas klonowania :
Użyj tego, jeśli chcesz mieć ograniczoną historię, ale nadal trochę.
źródło
shallow update not allowed
.Użyj następującego polecenia:
Gdzie:
depth
to liczba zatwierdzeń, które chcesz uwzględnić. tzn. jeśli chcesz tylko użyć najnowszego zatwierdzeniagit clone --depth 1
branch
to nazwa zdalnego oddziału, z którego chcesz sklonować. tzn. jeśli chcesz ostatnie 3 zatwierdzenia zmaster
użycia oddziaługit clone --depth 3 -b master
repo_url
to adres URL twojego repozytoriumźródło
shallow update not allowed
. Uważam, że odpowiedź na przepełnienie stosu jest przydatna w tym przypadku.Usunięcie
.git
folderu jest prawdopodobnie najłatwiejszą ścieżką, ponieważ nie chcesz / nie potrzebujesz historii (jak powiedział Stephan).Możesz więc utworzyć nowe repozytorium z ostatniego zatwierdzenia: ( Jak sklonować projekt seed / kick-start bez całej historii? )
następnie usuń
.git
, a następnie uruchomA jeśli chcesz ponownie użyć bieżącego repozytorium: czy bieżące zatwierdzenie jest jedynym (początkowym) zatwierdzeniem w repozytorium Git?
Następnie wykonaj powyższe kroki:
Przejdź do swojego repozytorium.
źródło
źródło
--depth 1
jest konieczne w tym przypadku, ponieważ historia jest również usunięte zrm -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
jest to niepotrzebne, ale jest również nieszkodliwe i pozwala zaoszczędzić trochę przepustowości sieci (nie ma sensu pobieranie historii, którą zamierzasz usunąć)Czy nie dokładnie to robi zgniatanie bazy? Po prostu zmiażdż wszystko z wyjątkiem ostatniego zatwierdzenia, a następnie (wymuś) wciśnij.
źródło