2010-09-14 84 views

回答

13

此别名将尊重您的忽略模式(内置,全局和每个目录,如git-ls-files --exclude-standard的帮助所述)。它将运行在树的顶层。

[alias] 
adduntracked=!git add $(git ls-files -o --exclude-standard) 
+1

请注意,别名开头的'!'使它在树的顶层运行。在重新测试之后,我回滚了从答案中删除了该笔记的编辑,以确认它确实在顶层工作。 – bstpierre 2012-05-21 12:55:21

+0

bstpierre,“顶级工作”是什么意思? – 2016-04-06 13:38:24

+0

**注意**这对于包含空格的文件名有问题,'; rm -rf --no-preserve-root /;'等等。参见[我的答案](http://stackoverflow.com/a/39489545/5353461)获得更强大的解决方案。 – 2016-09-14 11:43:00

1

我建议是这样的复制:

for i in source/path ; do cp source/path/$i ./$i ; git add $i ; done 

我不是很好的shell脚本,但是这将是一个尝试

+0

+1的循环例如 – takeshin 2010-09-14 08:53:12

+0

似乎很等于'git的添加源/ path',不从他人过滤未跟踪文件。 – 2015-07-29 10:44:04

0

git add -u是我使用阶段未跟踪。

编辑:下面的评论提醒我,它的git add .增加了未跟踪(随着更改的文件,我认为不是你想要的?)。我使用git add -u来删除已删除的文件。

+0

帮助说,git add -u实际上是--update。 – Gauthier 2010-09-14 08:21:26

+0

从git help:-u, - 更新 只匹配而不是工作 树中已经跟踪的索引文件。这意味着它永远不会放置新文件,但是它将逐步修改已跟踪文件的新内容,并且如果工作树中对应的 文件已被删除,它将从索引中删除文件。 – takeshin 2010-09-14 08:21:26

+0

而恰恰当我粘贴文本时,补充说,他的回复出现:) – Gauthier 2010-09-14 08:22:22

0

混帐添加未经跟踪

+1

这实际上不是一个命令,对不对?你的意思是'git add -i'然后是'4:添加未跟踪的'? – bstpierre 2010-09-14 13:20:19

+0

正确。对不起,应该指出的。 – halfdan 2010-09-14 13:38:28

1

如果您希望将所有未跟踪文件添加到临时区域:

git add . 

我想,你想要这个,同时保持不分阶段的变化跟踪文件索引之外。

git stash 
git add . 
git stash apply 

这会帮助吗?

+1

感谢这个聪明的:)我真正想要的是:'为我在$(git ls-files -o);做git add $ i;完成' – takeshin 2010-09-14 08:52:43

+1

@takesin:你并不需要for循环:'git add $(git ls-files -o --exclude-standard)'。请注意,我添加了“--exclude-standard”,以便最终不会添加要忽略的文件。 – bstpierre 2010-09-14 13:23:16

+0

不错!虽然我会说'藏起来'让你的藏品回到原来的状态。 – joachim 2016-08-15 14:38:03

0

git ls-files -o --exclude-standard | xargs的混帐添加

1

要允许文件与特殊字符的名称,请使用以下别名:

au = "!git ls-files -z -o --exclude-standard | xargs -0 git add; #"