[英]how to push to github without sync local/remote repo
我的电脑中有一个 git 文件夹,其中包含名为 work 的目录。 每 1000 万个文件将生成并添加到工作目录。
我需要每 1000 万次将在我的工作目录中生成的新文件推送到 github,然后我的自动化脚本会将其从我的本地工作目录中删除。
问题是我每 1000 万次只能获得 github 上的最后一个文件,而不是全部。
我想要的是:
#at t=10
file1 added to work git directory.
push it to github
delete it from work dir
#at t=20
file2 added to work git directory.
push it to github
delete it from work dir
#at t=30
file3 added to work git directory.
push it to github
delete it from work dir
then i'll have test1, test2 and test3 on github (this is what i want, but i get only file3 now or the last push file).
The file add & deletion works perfectly and done with my automation script. My only problem is the one i mentioned above.
Git 不适用于文件——不是你想的那样。 Git 甚至不适用于充满文件的文件夹,尽管这更接近。 这里的问题是 Git 与commits一起工作。 git push
操作推送一些提交。 您在本地 PC 上的存储库存储提交,而您在 GitHub 上的(单独)存储库存储提交。 所以你必须考虑提交,而不是文件。
每个提交就像所有文件的存档一样。 也就是说,给定一些提交(它们已编号),您要求 Git提取该提交,然后 Git 获取存储在该提交中的每个文件的完整存档。
如果您在星期二提交,并且该提交包含文件f1
、 f2
和f3
,则星期二的提交包含文件f1
、 f2
和f3
。 它包含这些文件,格式为您提交时的格式。 它永远包含这些文件。
如果您在周三进行了不同的提交,并且该提交包含文件f3
、 f4
和f5
(但不包括f1
或f2
),则该提交包含这些文件,形式为forever 。 它从不包含f1
和f2
。
提交充当快照,保存每个文件,及时冻结。 这是任何版本控制系统中#1 最重要的一点:它可以让您“回到过去”并查看周三所有文件的样子。 这些文件实际上是冻结的:您无法写入它们,甚至 Git 也无法写入它们。 为了节省空间——除其他原因外——Git 以一种特殊的格式存储它们,只有Git也可以读取它们:它们被压缩,重要的是,去重,因此如果周三的文件包含周二的所有文件,它们不会占用重复项的任何额外空间。
现在,显然,要完成任何工作,您不能使用即时冻结的文件集。 所以这不是您使用 Git 的方式。 相反,您告诉 Git:提取提交,以便我拥有可用、可读、可写的文件。 您选择提交——当然通常是最新最好的提交——然后 Git 会提取所有这些文件。
除非您希望下一次提交明确缺少这些文件,否则不应删除文件。 Git 将存储下一次提交的今天文件的重复使用副本,而不占用任何空间,如果它们都是重复的。 删除文件不会节省任何空间,因为它们永远存储在旧提交中。
这就是这里发生的事情:您将每个提交作为一个文件的存档,省略所有以前的文件。 提取最新的存档只为您提供一个文件。 如果那不是您想要的,请停止这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.