Как добавить .gitignore при объединении веток или игнорировать файлы при объединении? - PullRequest
1 голос
/ 27 января 2020

Я собираюсь объединить мою ветку разработчика с моим мастером на gitlab. Я по ошибке передал много файлов, которые я не хотел иметь на своем мастере (это около 150 файлов). Я создал запрос на слияние, но еще не слил ветви. Есть ли способ не объединить все эти 150 файлов и объединить только те, которые я хочу? Есть ли какой-нибудь способ добавить файл .gitignore при объединении? Я новичок в git и не могу найти решения этой проблемы.

Заранее спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 27 января 2020

Я бы порекомендовал создать новую ветку, чтобы сначала попытаться отредактировать ее, чтобы вы по ошибке не удалили что-то навсегда из ветви, над которой работали. Вы можете использовать,

git checkout -b <new-branch>

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

Извлеките этот ответ , вы можете удалить один файл,

Чтобы отследить один файл, который уже был добавлен / инициализирован в вашем хранилище, т.е. , прекратите отслеживать файл, но не удаляйте его из вашей системы, используйте: git rm --cached filename

Или удалите все файлы в обновленном gitignore,

Чтобы отследить каждый файл, который теперь в вашем .gitignore:

Сначала зафиксируйте все оставшиеся изменения кода , а затем выполните эту команду:

git rm -r --cached .

Это удалит все изменил файлы из индекса (область подготовки), затем просто запустил:

git add .

Зафиксируйте его:

git commit -m ".gitignore is now working"

0 голосов
/ 27 января 2020

Насколько я понимаю, вы сделали коммит, включающий кучу нежелательных файлов в вашей ветке developer. Я предполагаю, что вы сделали это в своем последнем коммите. Вы можете просто вернуться к предыдущему коммиту с помощью команды git --soft:

# we are on branch `developer`
git reset --soft HEAD~1

Теперь вы вернулись к предыдущему коммиту, но все еще со всеми изменениями в области подготовки (благодаря --soft флаг). Но ваши 150 нежелательных файлов также все еще находятся в промежуточной области (используйте git status для мониторинга). Итак, вы не потеряли какие-либо изменения, которые действительно имеют значение, но нам нужно удалить 150 нежелательных файлов из области подготовки.

Теперь у вас есть несколько вариантов. Вы можете удалить каждый из 150 файлов следующим образом:

git reset -- path/to/unwanted/file001

Это не очень приятная работа, особенно если вам придется повторить это 150 раз. Вы можете просто удалить все ваши файлы:

git reset

и поместить файлы, которые вы хотите зафиксировать, в ветку developer:

git add path/to/wanted/file01

Третий вариант - отключить все файлы. файлы с git reset, отредактируйте файл .gitignore и, наконец, добавьте изменения в область подготовки с помощью:

git add --all

Ваш .gitignore должен затем предотвратить добавление 150 ненужных файлов в подготовку площадь.

Итак, подведем итоги:

git reset --soft HEAD~1 # or HEAD~N if you created the unwanted files N commits ago
git reset
/* edit your .gitignore file */
git add --all
/* commit the results */
...