Можем ли мы игнорировать некоторые файлы или папки в режиме «git»? - PullRequest
0 голосов
/ 27 февраля 2019

Можем ли мы игнорировать папку в pull git, например, git pull origin master -f / node_modules ??

1 Ответ

0 голосов
/ 27 февраля 2019

Нет, это не так, как тянет работать.Может быть способ приблизиться к тому, что вы хотите сделать, но (1) как указано в комментариях, это может быть не путь [1], и (2) чтобы понять, что можно сделать, вам нужно понятьнемного больше о том, как git организует контент.

В качестве ответа на вопрос (и в случае, если вы решите следовать этому подходу):

Коммит в git - это снимок всегопроект.Вы объединяете коммиты, а не файлы, и pull - это, по сути, fetch, за которым следует слияние (по умолчанию).

Если вы хотите сделать что-то нестандартное с тем, как объединяется контент, тогдаЯ бы порекомендовал делать выборку и слияние отдельно.Например,

git checkout master
git fetch 
git merge --no-commit origin/master

Затем удалите нежелательные изменения.Если файлы были просто зафиксированы неверно, может быть достаточно что-то вроде

git rm -r node_modules

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

Затем зафиксировать слияние. НО это создает нетипичное слияние, иногда называемое "злым слиянием".Это не естественный результат слияния его родителей, поэтому он может сбить с толку как пользователей, так и определенные команды git (например, rebase).Эту технику следует использовать с осторожностью.Вариант, который позволяет избежать этой проблемы, будет

git fetch
git checkout origin/master
git checkout -b temp
# undo the unwanted changes
git commit
git checkout master
git merge temp
git branch -d temp

. Это отделяет изменение, возвращаемое от слияния, при этом все еще достигая «правильного» конечного результата.


[1] Вероятно,более правильная вещь - переписать историю так, чтобы node_modules, кажется, никогда не было зафиксировано.Проблема заключается в том, что, поскольку эти коммиты явно выдвинуты, переписывание истории потребует некоторой координации с каждым разработчиком, который использует репо.

Очистку можно выполнить с помощью rebase, или filter-branch, или, может быть, даже просто commit --amend - в зависимости от того, сколько работы основано на плохом коммите.

Вы можетеобратитесь к документам git rebase в разделе «восстановление после исходной перебазировки» для понимания проблемы, которую вызовет перезапись, и работы, необходимой для ее исправления - понимая, что если разработчик делает «неправильную вещь» при ее исправлении, он можетотмените перезапись.

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

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