git可以提交某些文件的空版本吗?一个典型的例子是我需要首先添加新的(未跟踪的)文件并将其作为空文件提交,以便将其内容标记为新的并进行审核(完整的,未跟踪的文件应该 not 被添加到索引中; git diff
应该通过将文件与其提交的空版本进行比较来显示新添加的内容。)
有git add -N file…
,其中file
在索引中包含空内容,但这仅表示将添加file
和{{ 1}}抱怨该文件尚未添加。问题是当前的非空版本不是必须添加的,而只是新文件的空版本。
有办法做到这一点吗?
PS:在自动将文件添加到git存储库的程序的上下文中询问此问题(我的程序遵循学生编写的代码)。未提交的代码是我尚未批准的代码。因此,学生创建的程序启动的状态应该是 empty 状态,即使我的程序刚刚在其主目录中找到一个新的非空程序;这是通过在git存储库中自动提交任何新学生程序文件的新的空版本来处理的。因此,与上次提交的git修订版相比,它们编写的新代码行显示为新添加的内容。
答案 0 :(得分:31)
说实话,我真的不明白这对什么有用。我会尝试修复审核流程,而不是弄乱历史记录。但如果你真的想这样做,可以采取以下几种方式:
务实的方法:
mv file out-of-way
touch file
git add file
mv out-of-way file
瓷器方法:
git add -N file
git add -p file
...当被问及是否应该添加单个大块时,只回答“否”。
管道方法:
首先,确保对象数据库中存在空对象:
git hash-object -w --stdin < /dev/null
这将返回空blob的SHA1(e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
)。您只需创建一次此对象。现在,您可以通过
git update-index --add --cacheinfo 0644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 file
答案 1 :(得分:-2)
强制添加所有文件
var result = uRecordFields.Select(x => new URecordFieldEmr
{
Values = x.Values.Where(y => y.DaysOfWeek.Any(z => z == DayOfWeek.Sunday)).ToList(),
Alias = x.Alias,
Key = x.Key
}).Where(x => x.Values != null && x.Values.Count != 0).ToList();
您可以在每个空文件夹中自动添加.gitignore文件。
$ git add -Af
您可以在每个空文件夹中自动添加.gitkeep文件。
$ find $PATH_TO_REPOSITORY -type d ! -path "*.git*" -empty -exec cp .gitignore '{}'/ \;