blu*_*e10 15 svn git recursion
当我git add
是一个文件夹时,整个内容和所有子文件夹都会自动暂存.如果文件夹包含我不想提交的子文件夹,我必须手动取消它们并将其添加到.gitignore
之后.明显的不间断感觉就像我在这里做错了.
解决方案是.gitignore
在添加之前编辑.但是在文件夹结构非常深/复杂的情况下,这有点棘手,因为很容易忘记忽略某些深层嵌套的文件/文件夹.
我正在寻找的是add
像SVN一样的步骤--non-recursive
,允许逐级添加文件夹而不需要暂存整个内容.但是我找不到这个功能git add
.所以我想知道:这种非递归添加的推荐git工作流程是什么?
考虑到其他人有完全相反的问题:也许我上面描述的行为是我的git版本(1.9.1)/设置的问题?
添加整个复杂的目录层次结构是一件不寻常的事情(当然,在普通的git开发工作流程中不会发生任何事情),因此git没有特殊的功能。您始终可以使用外部工具来组合要添加的文件列表,并将该列表提供给git add
,例如,仅以非递归方式将文件添加到当前目录中,
git add $(find . -type f -maxdepth 1)
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用
git ls-files --others --directory > file-list
Run Code Online (Sandbox Code Playgroud)
在当前目录中创建未跟踪文件的列表,然后在编辑器中对其进行编辑,以删除您不想添加的所有内容。(请确保将其删除file-list
。)然后可以使用
git add $(cat file-list)
Run Code Online (Sandbox Code Playgroud)
将文件和目录添加到已编辑列表中。(您留下的目录仍将递归添加)。
如果您只想添加目录中的文件而不添加任何其他子文件夹,您可以执行以下操作:
git add FolderName/\*.*
Run Code Online (Sandbox Code Playgroud)
其中*.*
表示来自每种文件类型的每个文件。文件夹没有扩展名,因此不会通过。