2015-06-17 4 views
0

Скажем, у меня есть папка с корнем git mine_git, у которой есть подкаталог subdir. Таким образом, я работал немного, и я в subdir - git status списков все измененные файлы:git добавить все отслеживаемые файлы - также те, что указаны в родительском каталоге

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

'git add -u' отлично работает здесь – maggick

+0

Спасибо @maggick - как ответ ниже отмечает, это не сработало для меня, потому что у меня была старая версия git; ура! – sdaau

ответ

3

Последняя версия 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, поэтому я не смог ее протестировать.

+0

Спасибо @suvayu - я использую 1.7.9.5, думаю, что там нет такой функциональности ... спасибо за это предложение, но для этого также требуется ручная копия папок с именами файлов ... было бы хорошо, если бы кто-нибудь когда-нибудь придумал с скриптом, управляющим старым поведением, хотя .. Еще раз спасибо - приветствия! – sdaau

+0

@sdaau Почему вы говорите, что требуется скопировать вставку имен файлов? Я думаю, достаточно всего лишь пути к каталогу верхнего уровня, и все пути не нужны. – suvayu

 Смежные вопросы

  • Нет связанных вопросов^_^