只添加未跟踪的文件
我在Git中find的一个非常有用的命令是git add -u ,它将所有未处理的文件都放入索引中。 有没有相反的? 在过去的几个月中,我经常发现自己处于一个交互式添加索引更新的位置,我希望在提交之前将所有未跟踪的文件添加到该索引。 
有没有办法只添加未跟踪的文件到索引,而不是单独识别它们? 我在帮助文档中看不到任何明显的内容,但也许我错过了它?
谢谢。
 用git add -i很容易。 键入a (为“添加untracked”),然后* (为“所有”),然后q (退出),你就完成了。 
 用一个命令来完成: echo -e "a\n*\nq\n"|git add -i 
  git ls-files -o --exclude-standard给出了未跟踪的文件,所以你可以像下面这样做(或者添加一个别名): 
 git add $(git ls-files -o --exclude-standard) 
您可以将其添加到〜/ .gitconfig文件中:
 [alias] add-untracked = !"git status --porcelain | awk '/\\?\\?/{ print $2 }' | xargs git add" 
然后,从命令行运行:
 git add-untracked 
不完全是你在找什么,但我发现这相当有帮助:
 git add -AN 
 将所有文件添加到索引,但没有他们的内容。 现在没有跟踪的文件现在就像跟踪一样。 他们的内容将显示在git diff ,然后您可以使用git add -p交互git add -p 。 
 人们已经build议将git ls-files的输出pipe道化为git add但是如果文件名包含空格或者诸如*这样的水平字符,这将会失败。 
安全的方法是使用:
 git ls-files -o --exclude-standard -z | xargs -0 git add 
 其中-z告诉git使用\0行结束符和-0告诉xargs相同。 这种方法的唯一缺点是-0选项是非标准的,所以只有一些版本的xargs支持它。 
  git ls-files列出当前目录中的文件。 如果你想从树中的任何地方列出未跟踪的文件,这可能会更好地工作: 
 git ls-files -o --exclude-standard $(git rev-parse --show-toplevel) 
在树中添加所有未跟踪的文件:
 git ls-files -o --exclude-standard $(git rev-parse --show-toplevel) | xargs git add 
 如果你有成千上万的未跟踪文件(呃,不要问),那么添加*时, git add -i将不起作用。 你会得到一个错误,说明Argument list too long 。 
如果你还在Windows上(不要问#2 :-),并且需要使用PowerShell添加所有未跟踪的文件,则可以使用以下命令:
 git ls-files -o --exclude-standard | select | foreach { git add $_ } 
我试过这个,它的工作原理:
 git stash && git add . && git stash pop 
  git stash只会把所有修改后的跟踪文件放入单独的堆栈,然后剩下的文件是未跟踪的文件。 然后通过做git add . 将根据需要放置所有文件未跟踪的文件。 最后,通过git stash pop从堆栈中获取所有修改过的文件 
要添加所有未跟踪的文件git命令是
git add -A
另外如果你想获得更多关于各种可用选项的细节,你可以input命令
git add -i
而不是第一个命令,用这个,你会得到更多的选项,包括添加所有未跟踪文件的选项,如下所示:
$ git add -i警告:LF将被README.txt中的CRLFreplace。 该文件的原始行结束在您的工作目录中。 警告:LF将被package.json中的CRLF所取代。
*命令* 1:状态2:更新3:恢复4:添加未跟踪5:补丁6:差异7:退出8:帮助现在什么> a