git添加所有跟踪的文件 - 也包括父目录中的文件

时间:2015-06-17 11:33:59

标签: git git-add

假设我有一个git根文件夹mine_git,其中有一个子目录subdir。我已经工作了一段时间,我在subdir - git status列出了所有已更改的文件:

subdir$ git status -uno
# On branch master
# ...
#
#   modified:   mysubdirfile.txt
#   modified:   ../a-main-file.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

K,所以我想将所有这些跟踪和修改的文件添加到临时区域(或缓存?索引?不确定名称),所以我可以事后提交;所以我发出:

subdir$ git add -u

...然后我再次检查:

subdir$ git status -uno
# On branch master
# Changes to be committed:
#   ...
#
#   modified:   mysubdirfile.txt
#
# Changes not staged for commit:
#   ...
#
#   modified:   ../a-main-file.txt
#
# Untracked files not listed (use -u option to show untracked files)

因此,只有当前位置下的那些文件是git add,而那些位于父/兄弟文件夹中的文件 - 即使这些文件被此git存储库跟踪,并显示在git status

然后我通常必须手动复制粘贴文件名,以便git add ../a-main-file.txt。显然这很痛苦 - 所以有一些命令可以添加git status -uno列出的所有文件,无论它们是否位于当前级别之下?

1 个答案:

答案 0 :(得分:5)

最新版本的git(2.4.3)应该已经这样做了。来自man 1 git-add

   -u, --update
       Update the index just where it already has an entry matching <pathspec>. 
       This removes as well as modifies index entries to match the working tree, 
       but adds no new files.

       If no <pathspec> is given when -u option is used, all tracked files in the entire
       working tree are updated (old versions of Git used to limit the update to the 
       current directory and its subdirectories).

那就是说,你可以试试像git add -u -- ../relative/path/to/project/root这样的东西。我没有方便的旧git版本,所以我无法测试它。