我在GitHub上有一个私人存储库,我想让它公开。但是,一些初始提交包含我不想公开的信息(硬编码的凭证等)。

在不包含部分或全部提交历史的情况下,使最近的提交公开(我真的不需要或不希望在公共存储库中保存以前的提交)的最简单方法是什么?


当前回答

这里的很多答案都使用了git克隆——depth 1,它保留了最后一次提交(包括提交消息)。

如果你想改变最后的提交消息(来自克隆的分支),你可以在克隆之后使用命令:git commit——modify -m "UPDATED message HERE"。

其他回答

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

You could set the GitHub repository to be a template (by going to settings and selecting the option just under the repository name). A button saying "Use this template" will then appear on the Code page. This copies over all the files but removes all history and if you keep the original repo as private, this doesn't show any details under the repo name (note that it will show on your site as you own both but not to anyone else). It's only if the repo is public that a link to the original repo appears under the repo name.

删除.git文件夹可能是最简单的路径,因为您不想要/不需要历史记录(如Stephan所说)。

所以你可以从最近的提交中创建一个新的repo: (如何克隆种子/启动项目没有整个历史?)

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

使用如下命令:

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

地点:

深度是要包含的提交数量。例如,如果你只想要最新的提交,请使用git clone—depth 1 Branch是要从中进行克隆的远程分支的名称。例如,如果你想从master分支提交最后3次,使用git clone——depth 3 -b master Repo_url是存储库的url

你可以在克隆时限制历史的深度:

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

如果你想要有限的历史记录,可以使用这个。