Как зафиксировать только некоторые новые файлы и игнорировать измененные? - PullRequest
0 голосов
/ 09 мая 2018

Использование git Я хочу зафиксировать в репо только некоторые вновь добавленные файлы, но игнорировать некоторые модифицированные (зараженные вирусом).

Как мне это сделать?

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

Я пытался

git add _my_new_files_

и я тоже могу сделать

git rm _updated_files_not_to_add_

Но тогда эти файлы будут удалены из репозитория, и я хочу сохранить старые версии в ...

Может быть, я могу добавить файлы, которые я хочу добавить, и спрятать остальные?

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

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

В linux, osx или git bash типа git gui &. Если это не подходит, вам нужно установить его. Если вы используете Mac, я думаю, что brew версия Git поставляется с графическим интерфейсом, а GitHub нет. (не уверен)

Это позволяет вам визуализировать, какие файлы размещаются, и очень легко даже выравнивать строки файлов.

Вы даже можете разместить файл в графическом интерфейсе, а затем набрать git status в командной строке и увидеть, что файл находится в стадии подготовки.

0 голосов
/ 09 мая 2018

Чтобы добавить немного к ответу Рона Набуурса , обратите внимание, что git commit получает содержимое фиксации из индекса Git, а не из рабочего дерева. (Индекс также называется промежуточной областью и иногда кешем .) Когда вы запускаете git add <em>file</em>, Git копирует содержимое данного file из рабочего дерева в указатель.

Если некоторые из ваших файлов рабочего дерева повреждены, но версии индекса не повреждены, вы можете просто не запускать git add для файлов рабочего дерева. Версии индекса остаются без изменений, и git commit будет их использовать.

Если версия индекса также повреждена, но версия HEAD не повреждена, вы можете указать Git скопировать версию HEAD в индекс, используя git reset, как показал Рон: git reset <em>file</em>.

Думайте об индексе как о "сидящем" между текущим (HEAD) коммитом и рабочим деревом, потому что он делает:

HEAD commit      index        work-tree
-----------    ---------      ---------
README.md      README.md      README.md
file.ext       file.ext       file.ext

Операция, которая копирует из рабочего дерева в индекс, - git add, а операция, которая копирует из фиксации в индекс - git reset.

(Любой зафиксированный файл по определению доступен только для чтения, поэтому нет операции для копирования из индекса в коммит. Конечно, вы можете сделать новый коммит, который станет вашим HEAD коммитом, используя git commit, чтобы превратить индекс в коммит.)

Также возможно копировать из любого коммита в рабочее дерево, используя git checkout в форме команды git checkout <em>commit</em> -- <em>file</em>. Однако обратите внимание, что когда вы делаете это, git checkout сначала копирует файл из данного коммита в индекс, затем из индекса в рабочее дерево, так что этот тип копирования заменяет index и версии рабочего дерева.

0 голосов
/ 09 мая 2018

Чтобы добавить файлы, которые вы хотите добавить на пульт, используйте команду, как вы сказали.

git add _my_new_files_

Это должно быть все, что вам нужно сделать после этого коммита и нажатия.

Если в итоге вы добавили неправильные файлы в ваш коммит, например, _updated_files_not_to_add_, вы можете удалить их из вашего коммита перед нажатием следующей команды:

git reset _updated_files_not_to_add_

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...