Skip to content

Instantly share code, notes, and snippets.

@jimpriest
Created June 24, 2025 16:40
Show Gist options
  • Save jimpriest/b75a9a5ddbd8cdacef93c6aa3cc8c176 to your computer and use it in GitHub Desktop.
Save jimpriest/b75a9a5ddbd8cdacef93c6aa3cc8c176 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name GitHub Clear Default Merge Method Button
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Remove default merge method selection so user must pick each time on GitHub PR merge UI
// @author You
// @match https://github.com/*/*/pull/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
function clearSelectedMergeMethod() {
// Find the merge method buttons container
// Inspect your PR merge UI and update selector if needed
// Usually buttons are under div with class like 'merge-methods' or similar
const methodButtons = document.querySelectorAll('form.js-merge-pr button.js-merge-method');
if (!methodButtons.length) return;
methodButtons.forEach(button => {
// Remove active or selected classes from all buttons
button.classList.remove('selected', 'btn-primary', 'btn-selected');
// Remove aria-pressed or similar if present
button.setAttribute('aria-pressed', 'false');
});
// Optionally disable the main Merge button so it can only be clicked after selection
const mergeButton = document.querySelector('form.js-merge-pr button[type="submit"]');
if (mergeButton) {
mergeButton.disabled = true;
}
console.log('Cleared selected merge method buttons on GitHub PR');
}
// Use MutationObserver to detect when merge buttons appear (they are dynamically added)
const observer = new MutationObserver(mutations => {
for (const mutation of mutations) {
if (mutation.addedNodes.length) {
clearSelectedMergeMethod();
}
}
});
observer.observe(document.body, { childList: true, subtree: true });
// Also clear selection on initial page load
clearSelectedMergeMethod();
// Re-enable the Merge button when user clicks any merge method button
document.body.addEventListener('click', e => {
if (e.target.matches('form.js-merge-pr button.js-merge-method')) {
const mergeButton = document.querySelector('form.js-merge-pr button[type="submit"]');
if (mergeButton) {
mergeButton.disabled = false;
}
}
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment