Подтвердить что ты не робот

Скопировать репозиторий git без истории

В настоящее время у меня есть приватный репозиторий github, который я хочу публиковать. Однако некоторые из первоначальных коммитов содержат информацию, которую я не хочу публиковать (жестко запрограммированные скрипты и т.д.).

Каков самый простой способ сделать последнюю фиксацию открытой (мне действительно не нужны или нужны предыдущие коммиты в публичном репозитории) без включения какой-либо или всей истории фиксации?

4b9b3361

Ответ 1

Вы можете ограничить глубину истории, пока cloning:

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

Используйте это, если хотите ограниченную историю, но все же некоторые.

Ответ 2

Используйте следующую команду:

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

Где:

  • depth - сумма, которую вы хотите включить. то есть, если вы просто хотите, чтобы последняя фиксация использовала git clone --depth 1
  • branch - это имя удаленной ветки, из которой вы хотите клонировать. т.е. если вы хотите, чтобы последние 3 фиксации из master использовали ветку git clone --depth 3 -b master
  • repo_url - это URL вашего репозитория

Ответ 3

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

Ответ 4

Удаление папки .git вероятно, является самым простым путем, поскольку вам не нужна/нужна история (как сказал Стефан).

Таким образом, вы можете создать новое репо из своей последней фиксации: (Как клонировать проект seed/kick-start без всей истории?)

git clone <git_url>

затем удалить .git, а затем запустить

git init

Или если вы хотите повторно использовать свое текущее репо: Сделать текущую фиксацию единственной (начальной) фиксацией в репозитории Git?

Выполните следующие шаги:

git add .
git commit -m "Initial commit"

Нажмите на свое репо.

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