关于github:复制没有历史记录的git仓库

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


删除.git文件夹可能是最简单的方法,因为您不需要历史记录(如stephan所说)。

因此,您可以从最新提交创建一个新的回购:(如何克隆没有完整历史的种子/启动项目?)

1
git clone <git_url>

然后删除.git,然后运行

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