如何在不同步本地/远程回购的情况下推送到github



我的电脑中有一个git文件夹,其中包含名为work的目录。每10mn将生成一个文件,并将其添加到工作目录中。

我需要每10分钟将我的工作目录中生成的新文件推送到github,然后我的自动化脚本会将其从我的本地工作目录中删除。

问题是,我每10分钟只会在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使用提交git push操作推送一些提交。本地PC上的存储库存储提交,GitHub上的(单独的(存储库存储提交。因此,您必须从提交而非文件的角度进行思考。

每个提交的行为就像所有文件的存档。也就是说,给定一些提交——它们是有编号的——你要求Git提取该提交,Git就会获得存储在该提交中的每个文件的完整存档。

如果您在星期二提交,并且该提交包含文件f1f2f3,则星期二的提交包含文件f1f2f3。它包含那些文件,以您提交时的形式。它完全包含那些文件永远

如果您在周三进行了不同的提交,并且该提交包含文件f3f4f5(但不包含f1f2(,则该提交包含这些文件,其形式为永远。它never包含f1f2

提交充当快照,保存在时间上冻结的每个文件。这是任何版本控制系统中最重要的一点:;时光倒流";看看周三你所有的文件是什么样子的。这些文件实际上被冻结了:你不能对它们进行写入,甚至Git也不能对它们写入。为了节省空间——除其他原因外——Git以一种特殊的格式存储它们,只有Git才能读取:它们被压缩,更重要的是,消除了重复,这样,如果周三的文件包括周二的所有文件,它们就不会为重复文件占用任何额外的空间。

现在,很明显,要完成任何工作,都不能使用一组冻结的时间文件。所以这不是你在Git上的工作方式。相反,你告诉Git:提取一个提交,这样我就有了可用的、可读取的、可写入的文件。你选择提交——当然通常是最新和最伟大的——Git提取所有文件。

您不应该删除文件,除非您希望下一个提交到显式缺少这些文件。Git将在不占用任何空间的情况下存储下一次提交的今天文件的重复使用副本,如果它们都是重复的。删除文件不会节省任何空间,因为它们将永远存储在旧的提交中。

这就是这里的情况:您将每个提交作为一个文件的存档,忽略之前的所有文件。提取最新的归档文件只会得到一个文件。如果那不是你想要的,那就别这样做了。

相关内容

最新更新