Извлечь удаленные файлы, но не измененные, перед фиксацией - PullRequest
0 голосов
/ 28 сентября 2018

Я нахожусь в ситуации с git, когда я управляю config-in-code для веб-сайта.

Прежде чем я буду готов к развертыванию, я хочу проверить мой каталог конфигурации на предмет свежего экспорта конфигурации в коде с живого сайта.Я хочу подтвердить, что вижу изменения от новых функций, но не вижу ни удаления, ни перезаписи функций, которые мы хотим сохранить, сделанных на живом сайте во время разработки новых функций.

Поэтому, когда я выполняю экспорт в моей ветви интеграции, я вижу git status что-то вроде этого:

modified:   core.entity_form_display.node.page.default.yml
modified:   core.entity_view_display.node.landing_page.default.yml
modified:   core.entity_view_display.node.page.default.yml
modified:   core.entity_view_display.node.page.full_width.yml
modified:   field.field.node.page.field_another_field
deleted:    field.field.node.landing_page.field_social_media_share_image.yml
deleted:    field.field.node.page.field_documents.yml
deleted:    system.core.config.deal

Я хочу избавиться от изменений deleted, носохраните все изменения modified, чтобы я мог проверить изменения по отдельности.Любой файл, который был удален при экспорте новой конфигурации с живого сайта в интеграцию, - это просто недавно разработанная функция, которая еще не была развернута в производство.Однако модификация файла конфигурации может сбить с толку разработчика, который не заботился о том, чтобы оставаться в курсе конфигурации во время разработки.

Это все перед фиксацией.Как я могу отменить все удаления файлов, желательно одной командой, сохранив все изменения?Конечно, я могу сделать git checkout fileA один за другим, но мне интересно, есть ли более быстрый путь.Завершение табуляции не может работать здесь, потому что bash не может видеть файл в каталоге, так как он удален.

1 Ответ

0 голосов
/ 28 сентября 2018

Возможно попробуйте это вместо: ( Я использовал Cygwin для этого )

Состояние git : я удалил пару файлов и изменил два файла

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    site/index.html
        modified:   site/js/app.js
        deleted:    site/js/lib/backbone-min.js
        deleted:    site/js/lib/underscore-min.js
        modified:   site/js/views/HandleBarView.js

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        .vs/

no changes added to commit (use "git add" and/or "git commit -a")

Запустить этот cmd: Даст вам все файлы, которые были удалены: аннотация из состояния git

git status | grep 'deleted' | awk '{print $2}' | xargs  
site/index.html site/js/lib/backbone-min.js site/js/lib/underscore-min.js

Скопируйте результат этой строки, затем введитеgit checkout - :

$ git checkout -- site/index.html site/js/lib/backbone-min.js site/js/lib/underscore-min.js

Результат: похоже, что все удаленные файлы были восстановлены

$ 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:   site/js/app.js
        modified:   site/js/views/HandleBarView.js

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        .vs/

no changes added to commit (use "git add" and/or "git commit -a")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...