问题
I currently have a private repository on github that I want to make public. However some of the initial commits contain information that I don't want to make public (hardcoded crentials, etc).
What is the easiest route to make the latest commit public (I don't really need or want the previous commits in the public repository) without including some or all of the commit history?
回答1:
You can limit the depth of the history while cloning:
--depth <depth>
Create a shallow clone with a history truncated to the specified
number of revisions.
Use this if you want limited history, but still some.
回答2:
Use the following command:
git clone --depth <depth> -b <branch> <repo_url>
Where:
depth
is the amount of commits you want to include. i.e. if you just want the latest commit usegit clone --depth 1
branch
is the name of the remote branch that you want to clone from. i.e. if you want the last 3 commits frommaster
branch usegit clone --depth 3 -b master
repo_url
is the url of your repository
回答3:
Deleting the .git
folder is probably the easiest path since you don't want/need the history (as Stephan said).
So you can create a new repo from your latest commit: (How to clone seed/kick-start project without the whole history?)
git clone <git_url>
then delete .git
, and afterwards run
git init
Or if you want to reuse your current repo: Make the current commit the only (initial) commit in a Git repository?
Follow the above steps then:
git add .
git commit -m "Initial commit"
Push to your repo.
git remote add origin <github-uri>
git push -u --force origin master
回答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:$pass@bitbucket.org/$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
来源:https://stackoverflow.com/questions/29368837/copy-a-git-repo-without-history