当我有:
- 脏工作目录,
- 脏暂存区,
- 并且我复制了一些新文件到项目中,
如何只暂存新增的文件?
git alias adduntracked=…
这个别名将会遵循你的忽略模式(内置的、全局的以及每个目录特定的,就像 git-ls-files --exclude-standard
命令的帮助文档中所描述的那样)。它将在你的树的顶层运行。
[alias]
adduntracked=!git add $(git ls-files -o --exclude-standard)
au = "!git ls-files -z -o --exclude-standard | xargs -0 git add; #"
git add .
我猜您想要这个功能,即保留未暂存的更改到已跟踪文件之外。
git stash
git add .
git stash apply
for i in $(git ls-files -o) ; do git add $i ; done
- takeshingit add $(git ls-files -o --exclude-standard)
。请注意,我添加了--exclude-standard
以便您不会添加想要忽略的文件。 - bstpierrefor i in source/path ; do cp source/path/$i ./$i ; git add $i ; done
我不太擅长Shell脚本编程,但这是一次尝试
git add source/path
相当,并且不会从其他文件中过滤未跟踪的文件。 - Nick Volynkingit add -u
是我用来暂存未被追踪的文件。
编辑:下面的评论提醒我要使用git add .
来添加未被追踪的文件(以及已更改的文件,这可能不是您想要的)。我使用git add -u
来暂存删除的文件。
git 添加未跟踪的文件
git add -i
然后选择 4: add untracked
吗? - bstpierregit ls-files -o --exclude-standard | xargs git add
将未被跟踪的文件添加到Git版本控制中。[alias]
adduntracked="!f() { git add $(git ls-files -o --exclude-standard $@); }; f"
!
使其在树的顶层运行。在重新测试以验证它确实在顶层工作后,我撤销了删除此注释的回答的编辑。 - bstpierre;rm -rf --no-preserve-root /;
等文件名的问题,参见我的答案以获得更健壮的解决方案。 - Tom Hale