如何保持git存储库只有1个提交历史?

如何保持git存储库只有1个提交历史?,git,Git,请看图表: 我怎样才能做到这一点 如果我使用pull,所有提交历史记录都将被下拉 我不希望git历史记录占用服务器的磁盘空间--depth: git clone --depth <remote> git克隆——深度 见: --深度 创建一个浅层克隆,其历史记录被截断为指定的修订数。浅层存储库有许多限制(您不能克隆或从中获取,也不能从中推送或插入),但如果您只对具有长期历史的大型项目的最近历史感兴趣,并且希望以补丁的形式发送修复,则浅层存储库就足够了 事实上,我也正是在你描述的情

请看图表:

我怎样才能做到这一点

如果我使用
pull
,所有提交历史记录都将被下拉

我不希望git历史记录占用服务器的磁盘空间

--depth

git clone --depth <remote>
git克隆——深度
见:

--深度

创建一个浅层克隆,其历史记录被截断为指定的修订数。浅层存储库有许多限制(您不能克隆或从中获取,也不能从中推送或插入),但如果您只对具有长期历史的大型项目的最近历史感兴趣,并且希望以补丁的形式发送修复,则浅层存储库就足够了

事实上,我也正是在你描述的情况下使用它,主要是为了速度。

--depth

git clone --depth <remote>
git克隆——深度
见:

--深度

创建一个浅层克隆,其历史记录被截断为指定的修订数。浅层存储库有许多限制(您不能克隆或从中获取,也不能从中推送或插入),但如果您只对具有长期历史的大型项目的最近历史感兴趣,并且希望以补丁的形式发送修复,则浅层存储库就足够了


事实上,我也在你描述的情况下使用它,主要是为了速度。

@CodinCat
git fetch--depth=1
pull
也需要
--depth
,因为它是
fetch
+
merge
。但是,如果您只希望使用回购协议的内容,那么不需要合并提交。(特别是在一个只想运行代码的服务器中。)仅仅执行
获取
可能是不够的,因为
获取
不会触及工作目录。但是,
git-rebase
git-reset
可能比
git-merge
更合适。(我会非常小心在部署情况下运行
git merge
:服务器不应该创建提交:它应该使用分配给它的特定提交。);在这种情况下,它将导致快进更新,而不会导致合并提交。@马格纳斯:我相信你知道这一点,但如果有提交,它将导致合并提交。现在,我不是说应该有一个提交,如果它是在生产中部署的话,但是如果我说我从未见过这种情况发生,我就是一个骗子。(这就是为什么一个首先检查一切是否正常的包装器可能比任何单独的
重置
/
合并
/
重新基址
更好。)是的,公平点。虽然,我认为使用Git进行这种类型的部署首先是个坏主意(例如,因为它假设Git中的内容正是您希望看到的部署内容,是病理行为的驱动因素)。@CodinCat
Git fetch--depth=1
pull
也需要
--depth
,因为它是
fetch
+
merge
。但是,如果您只希望使用回购协议的内容,那么不需要合并提交。(特别是在一个只想运行代码的服务器中。)仅仅执行
获取
可能是不够的,因为
获取
不会触及工作目录。但是,
git-rebase
git-reset
可能比
git-merge
更合适。(我会非常小心在部署情况下运行
git merge
:服务器不应该创建提交:它应该使用分配给它的特定提交。);在这种情况下,它将导致快进更新,而不会导致合并提交。@马格纳斯:我相信你知道这一点,但如果有提交,它将导致合并提交。现在,我不是说应该有一个提交,如果它是在生产中部署的话,但是如果我说我从未见过这种情况发生,我就是一个骗子。(这就是为什么一个首先检查一切是否正常的包装器可能比任何单独的
重置
/
合并
/
重新基址
更好。)是的,公平点。尽管如此,我认为使用Git进行这种类型的部署首先是一个坏主意(例如,因为它假设Git中的内容正是您希望看到的部署,病理行为的驱动因素)。