2015-12-04 2 views
0

Начальный выход:Почему изменение в подкаталог влияет на вывод `git status`?

[email protected] ~/.dotfiles/.vim/bundle $ git status 
On branch master 
Your branch is up-to-date with 'origin/master'. 
nothing to commit, working directory clean 
[email protected] ~/.dotfiles/.vim/bundle $ 

А теперь кд и запустить мерзавец состояние снова:

[email protected] ~/.dotfiles/.vim/bundle $ cd neobundle.vim/ 
[email protected] ~/.dotfiles/.vim/bundle/neobundle.vim $ git status 
On branch master 
Your branch is up-to-date with 'origin/master'. 
Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    modified: .gitignore 
    modified: .travis.yml 
    modified: LICENSE-MIT.txt 
    modified: Makefile 
    modified: README.md 
    modified: autoload/neobundle.vim 
    modified: autoload/neobundle/TOML.vim 
    modified: autoload/neobundle/autoload.vim 
    modified: autoload/neobundle/cache.vim 
    modified: autoload/neobundle/commands.vim 
    modified: autoload/neobundle/config.vim 
    modified: autoload/neobundle/init.vim 
    modified: autoload/neobundle/installer.vim 
    modified: autoload/neobundle/parser.vim 
    modified: autoload/neobundle/sources/github.vim 
    modified: autoload/neobundle/sources/neobundle_vim_recipes.vim 
    modified: autoload/neobundle/types/git.vim 
    modified: autoload/neobundle/types/hg.vim 
    modified: autoload/neobundle/types/nosync.vim 
    modified: autoload/neobundle/types/raw.vim 
    modified: autoload/neobundle/types/svn.vim 
    modified: autoload/neobundle/types/vba.vim 
    modified: autoload/neobundle/util.vim 
    modified: autoload/neobundle/vamkr.vim 
    modified: autoload/unite/kinds/neobundle.vim 
    modified: autoload/unite/sources/neobundle.vim 
    modified: autoload/unite/sources/neobundle_install.vim 
    modified: autoload/unite/sources/neobundle_lazy.vim 
    modified: autoload/unite/sources/neobundle_log.vim 
    modified: autoload/unite/sources/neobundle_search.vim 
    modified: bin/install.sh 
    modified: bin/neoinstall 
    modified: bin/neoinstall.bat 
    modified: bin/neoinstall_novimproc.bat 
    modified: ftdetect/vimrecipe.vim 
    modified: plugin/neobundle.vim 
    modified: syntax/vimrecipe.vim 
    modified: test/commands.vim 
    modified: test/lock.vim 
    modified: test/parse.vim 
    modified: test/recipe.vim 
    modified: test/sample.vim 
    modified: test/source.vim 
    modified: test/toml.vim 
    modified: test/tsort.vim 

no changes added to commit (use "git add" and/or "git commit -a") 
[email protected] ~/.dotfiles/.vim/bundle/neobundle.vim $ 

Почему это не более листинг включены в git status родительского каталога?

Главная .gitignore:

[email protected] ~/.dotfiles $ cat .gitignore 
# Don't put a comment after a command! 

*~ 
*.swp 

.vim/.netrwhist 
.vim/ctrlp-cache/ 

# 
# Include neobundle to bootstrap 
# 
# entries but not the dir itself 
.vim/bundle/* 
# include directory only 
!.vim/bundle/ 

!.vim/bundle/neobundle.vim/ 
[email protected] ~/.dotfiles $ 

Подкаталог .gitignore

[email protected] ~/.dotfiles/.vim/bundle/neobundle.vim $ cat .gitignore 
doc/tags 
[email protected] ~/.dotfiles/.vim/bundle/neobundle.vim $ 

Версия:

[email protected] ~/.dotfiles $ git --version 
git version 2.6.3 
[email protected] ~/.dotfiles $ 
+4

У вас есть каталог '.git /' в '~/.dotfiles /.vim/bundle' и '~/.dotfiles/.vim/bundle/neobundle.vim'? – Kenney

+2

Потому что 'neobundle.vim' - это отдельный репозиторий. –

+0

Да, это два разных репозитория. Есть ли способ обновления субрепозиториев одновременно с обновлением содержащего? –

ответ

0

/.dotfiles/.vim/bundle/neobundle.vim - это репозиторий, поэтому любые изменения в нем скрыты от содержащего репозитория.

Однако включены репо был не добавлен как подмодуль, так что он не будет сбит с git clone, как было бы желательно для .dotfiles установки.

подмодуль-ISE

  1. удалить файлы из субмодуля, которые каким-то образом отслеживаются в родительском репо:

    git rm --cache -r neobundle.vim/

  2. Добавить это как подмодуль

    git submodule add https://github.com/Shougo/neobundle.vim .vim/bundle/neobundle.vim/

  3. инициализироваться и обновление

    git submodule init 
    git submodule update 
    

Обновить все подмодули

git submodule update --recursive 

Reference

Большое руководство по Git Submodules: Adding, Using, Removing, Updating, которая не полностью поддерживается с git submodule ... команд.

Благодаря Николаю за то, что он указал мне в правильном направлении, особенно упоминание о «подмодуле».

2

Предполагая, что вы используете менеджер пакетов Vim, похоже, у вас есть Git sumodules в вашем репозиторий.

В результате ~/.dotfiles/.vim/bundle/neobundle.vim является еще одним репозиторием Git, который имеет свой статус. Обычно вы увидите, что этот подмодуль изменился в родительском репозитории (~/.dotfiles/.vim/bundle), но каталог, в котором он находится, мог быть проигнорирован. Кроме того, эти файлы не будут отображаться в статусе родительского каталога, поскольку они принадлежат субмодулю, а не самому репозиторию.

+0

Вы сказали: «но каталог, в котором он находится, возможно, был проигнорирован», однако я явно исключаю его из игнорирования, как показано выше: '! .vim/bundle/neobundle.vim /' Так почему бы и нет? увидишь это тогда? –

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