Если вы хотите сбросить свою локальную ветвь до последней фиксации в ветке вверх, то для меня работает до сих пор:
Проверьте свои пульты, убедитесь, что ваш восходящий поток и источник - это то, что вы ожидаете, если не так, как ожидалось, используйте git remote add upstream <insert URL>
, например из оригинального репо GitHub, из которого вы были откопаны, и / или git remote add origin <insert URL of the forked GitHub repo>
.
git remote --verbose
git checkout develop;
git commit -m "Saving work.";
git branch saved-work;
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;
Или:
git fetch upstream master;
git reset --hard upstream/master;
git clean -d --force;
В GitHub вы также можете проверить ветку с помощью то же имя, что и местное, чтобы сохранить там работу, хотя это необязательно, если происхождение разработки имеет те же изменения, что и локальная ветвь с сохраненной работой. Я использую ветвь разработки в качестве примера, но это может быть любое существующее имя ветки.
git add .
git commit -m "Reset to upstream/develop"
git push --force origin develop
Тогда, если вам нужно объединить эти изменения с другой веткой, где есть конфликты, сохраняя изменения в разработке, использовании:
git merge -s recursive -X theirs develop
Во время использования
git merge -s recursive -X ours develop
сохранить конфликтующие изменения ветви_имя. В противном случае используйте mergetool с git mergetool
.
Со всеми изменениями вместе:
git commit -m "Saving work.";
git branch saved-work;
git checkout develop;
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;
git add .;
git commit -m "Reset to upstream/develop";
git push --force origin develop;
git checkout branch_name;
git merge develop;
Обратите внимание, что вместо upstream / develop вы можете использовать хеш-фиксацию, другое имя ветки, и т. д. Используйте инструмент CLI, такой как Oh My Zsh, чтобы проверить, что ваша ветка зеленая, указывает, что ничего не зафиксировано, и рабочий каталог является чистым (что подтверждено или также проверено git status
). Обратите внимание, что это может фактически добавить фиксации по сравнению с восходящим потоком, если есть что-либо, автоматически добавленное фиксацией, например. UML-диаграммы, заголовки лицензий и т. Д., Поэтому в этом случае вы могли бы потянуть изменения на origin develop
на upstream develop
, если это необходимо.
Чтобы сопоставить pattern
или пустую строку, используйте
^$|pattern
^
и $
- начало и конец строки якоря соответственно. |
используется для обозначения альтернатив, например this|that
. \b
\b
в большинстве случаев это якорь «граница слова». Это совпадение с нулевой шириной, то есть пустая строка, но она соответствует только этим строкам в очень специфических местах , а именно на границах слова.
То есть \b
:
\w
и \W
(любой порядок): то есть между символом слова и символом не-слова ^
] и \w
, т.е. в начале строки, если она начинается с \w
\w
и $
, т.е. в конце строки, если она заканчивается на \w
Это не тривиально в зависимости от спецификации.
Альтернативой было бы разместить ваше регулярное выражение в невостребованных круглых скобках. Затем сделайте это выражение необязательным, используя квалификатор ?
, который будет искать 0 (т. Е. Пустую строку) или 1 экземпляр незахваченной группы.
Например:
/(?: some regexp )?/
В вашем случае регулярное выражение будет выглядеть примерно так:
/^(?:[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+)?$/
Нет |
"или" необходим оператор!
Здесь Документация Mozilla для синтаксиса регулярного выражения JavaScript.
Я не уверен, почему вы хотите проверить дополнительный адрес электронной почты, но я бы посоветовал вам использовать
^$|^[^@\s]+@[^@\s]+$
, что означает
^$ empty string
| or
^ beginning of string
[^@\s]+ any character but @ or whitespace
@
[^@\s]+
$ end of string
Вы выиграли 't прекратить поддельные электронные письма в любом случае, и таким образом вы не прекратите действительные адреса.
\ b соответствует границе слова. Я думаю, вы можете использовать ^ $ для пустой строки.