Как уже сказал Торек , первым ключевым моментом является обрезка веток удаленного отслеживания , чтобы убедиться, что вы сравниваете со свежим списком ссылок. Вы можете использовать
git fetch --prune
, затем определить локальные «оставшиеся» ветви с помощью:
git for-each-ref --format='%(if)%(upstream:short)%(then)%(else)%(color:bold red)%(end)%(refname:short)' refs/heads
(они будут выделены красным на выходе) [118 ]
или альтернативно (при условии, что ваш пульт называется origin
):
git branch -vv | grep -v origin/
... и последний этап состоит в том, чтобы вручную удалить их с помощью
[113 ]
Поскольку они отображаются просто под рукой, вы не должны страдать больше, чем за пару копий / вставок. Если число устаревших ветвей регулярно огромно или, скажем, достаточно важно, то может быть что-то в рабочем процессе можно было бы внедрить, чтобы избежать повторяющейся ситуации?
Как выглядит схема базы данных?
Вы можете добавить столбец идентификатора, который будет автоматически увеличивать для каждой вставки, чтобы гарантировать уникальные строки.
Вы можете использовать синтаксис REPLACE INTO , если хотите перезаписать старую запись новой с тем же ключом.
Или вы можете использовать INSERT ... ON DUPLICATE KEY ОБНОВИТЬ Синтаксис , если вы хотите выполнить обновление записи вместо того, чтобы встретить дубликат.
Редактировать: Я хотел бы добавить несколько примеров.
Скажем, у вас есть таблица с именем tbl
с двумя столбцами, id
и значение
. Есть одна запись, id = 1 и значение = 1. Если вы выполняете следующие операторы:
REPLACE INTO tbl VALUES(1,50);
У вас все еще есть одна запись с id = 1, значением = 50. Обратите внимание, что вся запись сначала была УДАЛЕНА, а затем снова вставлена. Затем:
INSERT IGNORE INTO tbl VALUES (1,10);
Операция выполняется успешно, но ничего не вставлено. У вас все еще есть id = 1 и значение = 50. Наконец:
INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;
Теперь у вас есть одна запись с id = 1 и значением = 200.
What does the database schema look like?
You could add an ID column which will auto increment for each insert, to guarantee unique rows.
You can use triggers.
Also check this introduction guide to triggers.
Попробуйте создать дублирующуюся таблицу, предпочтительно временную таблицу, без ограничения уникальности и выполните массовую загрузку в эту таблицу. Затем выберите только уникальные (DISTINCT) элементы из временной таблицы и вставьте в целевую таблицу.
You can make sure that you do not insert duplicate information by using the EXISTS condition.
For example, if you had a table named clients with a primary key of client_id, you could use the following statement:
INSERT INTO clients
(client_id, client_name, client_type)
SELECT supplier_id, supplier_name, 'advertising'
FROM suppliers
WHERE not exists (select * from clients
where clients.client_id = suppliers.supplier_id);
This statement inserts multiple records with a subselect.
If you wanted to insert a single record, you could use the following statement:
INSERT INTO clients
(client_id, client_name, client_type)
SELECT 10345, 'IBM', 'advertising'
FROM dual
WHERE not exists (select * from clients
where clients.client_id = 10345);
The use of the dual table allows you to enter your values in a select statement, even though the values are not currently stored in a table.