Как заменить главную ветку в Git целиком из другой ветки? [Дубликат]

jQuery не обеспечивает обратный вызов для того, что вы ищете. Вот доступные состояния готовности:

Value   State   Description
0   UNSENT  open()has not been called yet.
1   OPENED  send()has not been called yet.
2   HEADERS_RECEIVED    send() has been called, and headers and status are available.
3   LOADING Downloading; responseText holds partial data.
4   DONE    The operation is complete.

Вы ищете readistate 2, так как это самое раннее, что вы знаете о том, что сервер получил сообщение.

Это должно вывести вас из земли:

var xhr = new XMLHttpRequest();
xhr.open("POST", clicked);
xhr.onreadystatechange = function() {
    if (xhr.readyState >= 2) window.location = clicked;
};
xhr.send($('#track-click-post-url').attr('value'));

https://developer.mozilla.org/en/XMLHttpRequest для дальнейшего чтения.

1471
задан Peter Mortensen 19 August 2018 в 18:08
поделиться

3 ответа

Вы должны иметь возможность использовать «нашу» стратегию слияния, чтобы перезаписать мастер с помощью seotweaks следующим образом:

git checkout seotweaks
git merge -s ours master
git checkout master
git merge seotweaks

Результат должен быть таким, чтобы ваш мастер теперь по существу seotweaks.

( -s ours сокращенно от - strategy = ours )

Из документы о «нашей» стратегии:

Это разрешает любое количество головок, но результирующее дерево слияния всегда совпадает с деревом текущей ветки, фактически игнорируя все изменения из всех других ветвей. Он предназначен для использования вместо старой истории развития боковых веток. Обратите внимание, что это отличается от опции -Xours в стратегии рекурсивного слияния.

Обновление из комментариев: Если вы получите фатальный результат: отказ объединить несвязанные истории , измените вторую строку на это: git merge --allow-unrelated-stories -s ours master

2660
ответ дан 22 November 2019 в 20:15
поделиться

Вы можете переименовать / удалить мастер на удаленном компьютере, но это будет проблемой, если многие люди основывали свою работу на удаленной основной ветке и вытащили эту ветку в свое локальное репо.
В данном случае это может быть не так, поскольку кажется, что все работают над веткой « seotweaks ».

В этом случае вы можете:
git remote --show может не работать. (Сделайте git remote show , чтобы проверить, как ваш пульт объявлен в вашем локальном репозитории.Я предполагаю " происхождение ")
(Что касается GitHub, house9 комментирует: «Мне нужно было сделать еще один шаг, нажмите кнопку« Admin ] »на GitHub и установите« Ветвь по умолчанию »на что-то другое, кроме ' master ', а затем верните его обратно »)

git branch -m master master-old  # rename master on local
git push origin :master          # delete master on remote
git push origin master-old       # create master-old on remote
git checkout -b master seotweaks # create a new local master on top of seotweaks
git push origin master           # create master on remote

Но опять же:

  • если другие пользователи попытаются извлечь, в то время как master удален на удаленном компьютере, их запросы не удастся (« нет такого ref on remote ")
  • , когда мастер воссоздается на удаленном компьютере, pull будет пытаться объединить этот новый мастер на их локальном (теперь старом) мастере: множество конфликтов. На самом деле им нужно сбросить --hard их локальный мастер на удаленную / главную ветку, которую они будут извлекать, и забыть о своем текущем мастере.
73
ответ дан 22 November 2019 в 20:15
поделиться

Как насчет использования git branch -m для переименования основной ветки в другую, а затем переименования ветки seotweaks в master? Примерно так:

git branch -m master old-master
git branch -m seotweaks master
git push -f origin master

Это может удалить коммиты в мастере происхождения , пожалуйста, проверьте свой мастер источника перед запуском git push -f origin master .

450
ответ дан 22 November 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: