web-dev-qa-db-ja.com

履歴なしでGitリポジトリをコピーする

現在、githubに公開したいプライベートリポジトリがあります。ただし、初期コミットの一部には、公開したくない情報が含まれています(ハードコードされたcrentialsなど)。

コミット履歴の一部またはすべてを含めずに、最新のコミットをパブリックにする(パブリックリポジトリに以前のコミットを実際に必要としない、または必要としない)最も簡単な方法は何ですか?

145
Rafe

クローニング の間に、履歴の深さを制限できます。

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

限られた履歴が必要な場合はこれを使用しますが、それでもいくつか使用します。

223
Gauthier

次のコマンドを使用します。

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

どこで:

  • depthは、含めるコミットの量です。つまり、最新のコミットが必要な場合はgit clone --depth 1を使用します
  • branchは、クローンを作成するリモートブランチの名前です。つまり、masterブランチからの最後の3つのコミットが必要な場合は、git clone --depth 3 -b masterを使用します
  • repo_urlはリポジトリのURLです
198
Agam Rafaeli
#!/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

.gitフォルダーを削除することは、おそらく履歴を必要としない/必要としないので(Stephanが言ったように)最も簡単なパスです。

したがって、最新のコミットから新しいリポジトリを作成できます:履歴なしでシード/キックスタートプロジェクトをクローンする方法?

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
6
J W