【问题标题】:How automatically add to version control new content in a new directory?如何在新目录中自动添加到版本控制中的新内容?
【发布时间】:2016-06-24 14:02:20
【问题描述】:

我在app/assets/ 下创建了一个新的fonts 目录,并将fonts 目录与git add fonts 添加到版本控制中。
通常,当我在已受版本控制的项目文件夹的任何位置创建或包含新文件时,此新文件会自动添加到索引中并由git statusuntracked files. 部分下报告 但是我注意到我在fonts 中包含的每个新文件都不会自动包含在版本控制中。相反,如果我 git add 已经包含文件的目录,那么这些文件也将被 git 添加。我怎样才能解决这个问题?
有没有办法创建一个新目录并将其添加到版本控制中,以便包含的每个新文件也自动添加到版本控制中?

【问题讨论】:

  • 运行git add -A?
  • 我认为git add fonts 可以胜任这项工作,但似乎并非如此。运行git add fonts 然后git add -A 似乎是重复。是否有任何类似git add -A 的命令用于单个对象,一个将新目录及其所有内容添加到索引的命令?我把git add -A 作为最后的手段。
  • 和你聊过之后,我对你的问题真的不是很清楚,不认为你的问题(或者我的回答)对其他人有好处。投票结束。
  • 最好不要让我在聊天室等 30 分钟。我怀疑应该在目录不为空时运行git add newdirectory,这样所有新文件都会递归地添加到版本控制中。我会在睡觉后检查我的想法,并可能给自己添加一个答案。

标签: ruby-on-rails git git-add


【解决方案1】:

当您使用 git init 后跟 git add -A 和第一次提交来初始化存储库时,您会创建一个 Git 目录,它是存储库的副本。存储库也是工作目录。
当您修改工作目录中的文件时,这些文件将被暂存以在暂存区域中提交。然后,您可以提交这些更改并“更新”Git 目录。

当您在工作目录中添加新文件时,Git 也会将该文件暂存以在“未跟踪文件”部分提交,因为它是新文件,并且在 Git 目录中没有任何痕迹。

Git 只会自动暂存新文件。
新的空目录会被忽略,稍后也会被 Git 删除(见下文)。
因此,当您添加一个新的空目录并尝试提交时,Git 会警告您该提交不会进行任何更改,并建议您使用 --allow-empty 选项,如果您想保留那个无用的提交。

相反,在创建新目录后,您应该在其中放入一些文件。 实际上,通常为了让 Git 在工作目录和 Git 目录中保留一个空目录,需要在该目录中添加一个名为 .keep 的空隐藏文件

这一次git add fonts 会成功,因为它将递归地将fonts 目录内的所有文件添加到暂存区。下一次提交会将新快照永久存储到您的 Git 目录中。或者,如果此提交没有意义,您可以继续处理您的工作目录,到时候按照 Carpetsmoker 的建议,执行git add -A,然后提交。

如果您用文件补充新目录但不添加 .keep 空隐藏文件,稍后如果您删除 fonts 目录中的所有字体文件,则目录本身将被删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2020-05-12
    • 2016-03-06
    • 1970-01-01
    相关资源
    最近更新 更多