我在Git中发现非常有用的命令之一是git add -u
将所有但未跟踪的文件抛出到索引中。那有反过来了吗?在过去的几个月里,我经常发现自己处于这样一个位置:我已经交互式地为索引添加了一些更新,并且我希望在提交之前将所有未跟踪的文件添加到该索引。
有没有办法将仅未跟踪的文件添加到索引而不单独识别它们?我在帮助文档中没有看到任何明显的内容,但也许我错过了它?
感谢。
答案 0 :(得分:201)
使用git add -i
很容易。输入a
(用于“添加未跟踪”),然后输入*
(用于“全部”),然后输入q
(退出),然后就完成了。
使用单个命令执行此操作:echo -e "a\n*\nq\n"|git add -i
答案 1 :(得分:29)
git ls-files -o --exclude-standard
提供未跟踪的文件,因此您可以执行以下操作(或为其添加别名):
git add $(git ls-files -o --exclude-standard)
答案 2 :(得分:10)
您可以将其添加到〜/ .gitconfig文件中:
[alias]
add-untracked = !"git status --porcelain | awk '/\\?\\?/{ print $2 }' | xargs git add"
然后,从命令行开始,运行:
git add-untracked
答案 3 :(得分:10)
不完全是你想要的,但我发现这非常有帮助:
git add -AN
将所有文件添加到索引中,但没有其内容。现在未跟踪的文件就像跟踪它们一样。他们的内容将显示在git diff
中,您可以使用git add -p
以交互方式添加。
答案 4 :(得分:9)
人们建议将git ls-files
的输出汇总到git add
,但如果文件名包含空格或全局字符(例如*
),则会失败。
安全的方法是使用:
git ls-files -o --exclude-standard -z | xargs -0 git add
其中-z
告诉git使用\0
行终止符,-0
告诉xargs相同。这种方法的唯一缺点是-0
选项是非标准的,因此只有某些版本的xargs
支持它。
答案 5 :(得分:5)
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
答案 6 :(得分:3)
我试过这个并且有效:
git stash && git add . && git stash pop
git stash
只会将所有修改后的跟踪文件放入单独的堆栈中,然后留下的文件是未跟踪的文件。然后通过执行git add .
将根据需要暂存所有文件未跟踪文件。最后,通过执行git stash pop
答案 7 :(得分:0)
如果您有数千个未跟踪的文件(呃,请不要问),那么添加git add -i
时*
将无效。您将收到一条错误消息,指出Argument list too long
。
如果你当时也在Windows上(不要问#2 :-)并且需要使用PowerShell添加所有未跟踪的文件,你可以使用这个命令:
git ls-files -o --exclude-standard | select | foreach { git add $_ }
答案 8 :(得分:0)
这里有很多好的技巧,但是在Powershell中,我无法使它正常工作。
我是.NET开发人员,我们仍然主要使用Windows OS,因为我们还没有太多使用.Net核心和跨平台,因此我每天在Git中使用的是Windows环境,其中使用的外壳是更常见的是Powershell,而不是Git bash。
可以按照以下过程创建别名函数,以在Git存储库中添加未跟踪的文件。
在Powershell的$ profile文件中(以防丢失-您可以运行: 新商品$ Profile)
记事本$ Profile
现在添加此Powershell方法:
function AddUntracked-Git() {
&git ls-files -o --exclude-standard | select | foreach { git add $_ }
}
保存$ profile文件,然后将其重新加载到Powershell中。 然后使用以下命令重新加载您的$ profile文件: 。 $ profile
这类似于* nix环境IMHO中的源命令。
所以下次,如果您是在Windows中针对Git存储库使用Powershell的开发人员, 并只想包含未跟踪的文件即可运行:
AddUntracked-Git
这遵循Powershell约定,其中有动词-名词。
答案 9 :(得分:0)
git add -u (未跟踪的文件)
git add。 (在此目录中添加所有文件)
git add -all (添加所有目录中的所有文件)
答案 10 :(得分:-3)
添加所有未跟踪的文件 git命令是
git add -A
此外,如果您想获得有关各种可用选项的更多详细信息,可以键入命令
git add -i
而不是第一个命令,通过这个,您将获得更多选项,包括添加所有未跟踪文件的选项,如下所示:
$ git add -i warning:LF将由README.txt中的CRLF替换。该 文件将在您的工作目录中具有其原始行结尾。 警告:LF将被package.json中的CRLF替换。
*命令* 1:状态2:更新3:恢复4:添加未跟踪5:补丁6:差异7:退出8: 帮助现在什么>一个