Copy a git repo without history
我目前在Github上有一个私有的存储库,我想公开它。但是,一些初始提交包含我不想公开的信息(硬编码的人员等)。
在不包括部分或全部提交历史的情况下,最简单的方法是什么来公开最新的提交(我不真正需要或不希望在公共存储库中公开以前的提交)?
克隆时可以限制历史的深度:
1 2 3 | --depth <depth> Create a shallow clone with a history truncated to the specified number of revisions. |
如果您想要有限的历史记录,但仍然有一些历史记录,请使用此选项。
使用以下命令:
1 | git clone --depth <depth> -b <branch> <repo_url> |
号
哪里:
depth 是您想要包括的承诺金额。也就是说,如果您只想使用最新的commit,请使用EDOCX1[1]branch 是要克隆的远程分支的名称。也就是说,如果您想从master 分支机构获得最后3个承诺,请使用git clone --depth 3 -b master repo_url 是您的存储库的URL
删除
因此,您可以从最新提交创建一个新的回购:(如何克隆没有完整历史的种子/启动项目?)
1 | git clone <git_url> |
。
然后删除
1 | git init |
或者,如果您希望重用当前回购:使当前提交成为Git存储库中唯一的(初始)提交?
按照上述步骤操作:
1 2 | git add . git commit -m"Initial commit" |
。
推动回购。
1 2 | git remote add origin <github-uri> git push -u --force origin master |
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #!/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 |