请注意以下结构:
/assets --> this dir shouldn't be ignored. but SOME OF their contents SHOULD.;
ignoredfile.jpg --> should be ignored.
ignoredfile2.gif --> --> should be ignored.
/blog --> this dir shouldn't be ignored. but SOME OF their contents SHOULD.;
/images --> this dir shouldn't be ignored. but ALL their contents SHOULD.;
在/assets
内部文件夹中,我有一个gitignore文件:
# Ignore everything in this directory
*
# Except this file
!.gitignore
!/images
!/resize
!/blog
在'/ assets / blog'里面我有另一个.gitignore
。
# Ignore everything in this directory
*
# Except those files
!.gitignore
!/images
问题
当我推送到远程服务器时,git DO推送了/blog
目录而不是/blog/images
目录。为什么?
我该如何解决这个问题?
答案 0 :(得分:3)
只需将其从.gitignore
中删除,然后使用通常的git add -A <directory-name>
重新添加即可,您应该没问题。
请注意可能会再次删除目录的合并,但如果要正确合并所有内容,则应该没问题。
你不能在git中提交空目录;一种常见的方法是在其中放置一个空的“占位符”文件,只是说你希望它留在那里。
例如,将名为.keep
的空隐藏文件放入/images
目录并更改.gitignore
,如下所示:
/images/*
!/images/.keep
现在,你添加/提交.keep
文件,你应该没问题。
将.gitignore
放在/images
内,并附上以下内容:
*
!.gitignore
答案 1 :(得分:1)
git
不跟踪目录。如果忽略该目录中的所有文件,git
将不会记录该目录甚至存在。您可以创建一个(否则无用的)空文件,例如,该目录中的.keep
和git add
该文件,但我不确定这是否适合您的最终目标。
答案 2 :(得分:0)
从.gitignore
删除目录。
使用git add <dir>
将目录添加到您的存储库。
再次提交并推送。