【问题标题】:Using git on generated code with NodeJS在 NodeJS 生成的代码上使用 git
【发布时间】:2015-02-03 06:03:43
【问题描述】:

我有一个问题,Git 忽略了我的服务器在本地存储库中所做的自动更改。我有一个生成器,它生成一个代码并将其存储在一个名为“生成/”的文件夹中。我为此使用NodeJS,编写文件的过程由:

fs.WriteFileSync();

根据文档这个函数:

将数据同步写入文件,如果文件已存在则替换该文件。数据可以是字符串或缓冲区。

“生成/”文件夹内部有一个 git repo,在每个代码生成结束时它会自动调用:

git add -A
git commit -m "message"
git push

这是假设将生成的代码推送到远程存储库。但事实并非如此。由于某种原因,它总是落后一代。如果我在第 1 代生成代码并推送它,则不会将任何更改推送到存储库。如果我在第 2 代再次生成,来自第 1 代的更改将被推送到 repo。它总是落后一代。

我的猜测是,这是因为我使用的函数替换了文件,而 Git 一开始并不知道它只推送旧的更改。一旦我调用了另一代,Git 终于知道在第一次代码生成中完成了一些更改并推送了那个。

我希望我的描述是正确的。有谁知道如何解决它?我想我需要让 Git 知道文件已被替换,但我不知道如何替换。

有什么帮助吗?谢谢!

【问题讨论】:

    标签: node.js git code-generation


    【解决方案1】:

    您可以找到所有未跟踪的文件并添加它们,

    for i in `git ls-files --others --exclude-standard`
    do
    git add $i
    done
    

    或只是更改的文件

    for i in `git diff --name-only`
    do
    git add $i
    done
    

    继续提交并推送。

    【讨论】:

    • 问题是文件基本相同。同名,只是因年代不同而内容不同。你觉得这行得通吗?
    • 我会试试的。我需要弄清楚如何实际调用您使用我用于 Node 的 git binder 编写的这两个命令之一。
    • git diff --name-only 的版本有效!太棒了。
    猜你喜欢
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 2020-04-25
    • 1970-01-01
    • 2011-01-03
    • 2016-11-28
    相关资源
    最近更新 更多