Закладка: заблокирован доступ к кадру с перекрестным началом [дубликат]

Вы можете использовать git merge --squash для этого, что немного более элегантно, чем git rebase -i. Предположим, что вы на хозяине, и вы хотите раздавить последние 12 коммитов в одном.

ВНИМАНИЕ: сначала убедитесь, что вы совершили проверку работоспособности, что git status чиста (поскольку git reset --hard выбрасывает поэтапные и неустановленные изменения)

Затем:

# Reset the current branch to the commit just before the last 12:
git reset --hard HEAD~12

# HEAD@{1} is where the branch was just before the previous command.
# This command sets the state of the index to be as it would just
# after a merge from that commit:
git merge --squash HEAD@{1}

# Commit those squashed changes.  The commit message will be helpfully
# prepopulated with the commit messages of all the squashed commits:
git commit

Документация для git merge более подробно описывает параметр --squash.


Обновление: единственное реальное преимущество этого метода по сравнению с более простым git reset --soft HEAD~12 && git commit, предложенным Крисом Джонсеном в , его ответом является то, что вы получаете сообщение о фиксации preopulated с каждым сообщением фиксации, которое вы раздавите.

34
задан Kunal Vashist 22 February 2012 в 13:01
поделиться

2 ответа

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

Если у вас есть контроль над обоими сайтами, вы можете использовать postMessage для передачи данных в разных доменах. Очень простой пример:

// framed.htm:
window.onmessage = function(event) {
    event.source.postMessage(document.body.innerHTML, event.origin);
};

// Main page:
window.onmessage = function(event) {
    alert(event.data);
};

// Trigger:
// <iframe id="myframe" src="framed.htm"></iframe>
document.getElementById('myframe').contentWindow.postMessage('','*');
46
ответ дан Rob W 31 August 2018 в 16:53
поделиться

В событии Internet Explorer 8, переданном как параметр, может быть null, поэтому вам нужно получить доступ к событию другим способом:

В файле frame.html:

window.onmessage = function(event) {
   var evt = evt || window.event;
   evt.source.postMessage('Message from iFrame', evt.origin);
};

На main.html:

window.onmessage = function(event) {
   var evt = evt || window.event;
   alert(evt.data);
};

Событие запускается так же, как и Rob W:

document.getElementById('frameId').contentWindow.postMessage('message','*');
3
ответ дан Przemek Marcinkiewicz 31 August 2018 в 16:53
поделиться
Другие вопросы по тегам:

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