您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
为 Github 添加自定义的 ssh 别名
// ==UserScript== // @name MySSHAlias // @name:zh-CN MySSHAlias // @namespace https://gf.qytechs.cn/users/681572-q962 // @match https://github.com/* // @version 1.2 // @author q962 // @license MIT // @description Add a custom ssh alias for Github // @description:zh-CN 为 Github 添加自定义的 ssh 别名 // @grant GM_setClipboard // @grant GM_addStyle // @grant GM_getValue // @grant GM_setValue // ==/UserScript== let meta_user_login = document.querySelector('[name="user-login"]') || {} let current_user_repositorie = location.pathname.split('/').at(1) if( meta_user_login.content != current_user_repositorie ) return GM_addStyle(` .alias_input_elem { margin-right: 1em; } `); let primerPortalRoot; function get_repository_path(){ let parts = location.pathname.split('/') return parts[1] + '/' + parts[2] } const observer = new MutationObserver(function (mutationsList, observer) { if (!document.querySelector("#repository-container-header:not([hidden])")) return; for (const mutation of mutationsList) { for (const target of mutation.addedNodes) { if (target.nodeType != Node.ELEMENT_NODE) continue; if ( target.parentElement && target.parentElement.id == "__primerPortalRoot__" ) { primerPortalRoot = target.parentElement; let terminal_icon_elem = target.querySelector(".octicon-terminal"); if (!terminal_icon_elem) continue; let clone_title_elem = terminal_icon_elem.nextElementSibling; if (!clone_title_elem) continue; let alias_input_box_elem = clone_title_elem.cloneNode(); clone_title_elem.parentElement.insertBefore( alias_input_box_elem, clone_title_elem.nextElementSibling ); let alias_input_elem = document.createElement("input"); alias_input_elem.value = GM_getValue("alias") || ""; alias_input_elem.className = "form-control input-monospace input-sm color-bg-subtle alias_input_elem"; alias_input_elem.readOnly = false; alias_input_elem.placeholder = "ssh alias"; alias_input_elem.addEventListener("keyup", (event) => { GM_setValue("alias", event.target.value); let alias = event.target.value || "github.com" let my_ssh_alias_url_elem = primerPortalRoot.querySelector( ".my_ssh_alias_url_elem" ); if (my_ssh_alias_url_elem) my_ssh_alias_url_elem.value = `git@${alias}:${get_repository_path()}.git`; }); alias_input_box_elem.appendChild(alias_input_elem); } if (!primerPortalRoot) continue; let my_ssh_alias_url_elem = primerPortalRoot.querySelector( ".my_ssh_alias_url_elem" ); let clone_with_ssh_elem = target.querySelector("#clone-with-ssh"); if (!my_ssh_alias_url_elem && clone_with_ssh_elem) { let url_input_container = clone_with_ssh_elem.parentElement.cloneNode(true); let input_elem = url_input_container.querySelector("#clone-with-ssh"); input_elem.id = ""; input_elem.setAttribute("value", ""); let alias = GM_getValue("alias") || "github.com"; input_elem.value = `git@${alias}:${get_repository_path()}.git`; input_elem.nextElementSibling.addEventListener("click", () => { GM_setClipboard(input_elem.value); }); my_ssh_alias_url_elem = input_elem; my_ssh_alias_url_elem.classList.add("my_ssh_alias_url_elem"); clone_with_ssh_elem.parentElement.parentElement.insertBefore( url_input_container, clone_with_ssh_elem.parentElement ); } if (my_ssh_alias_url_elem) { if (primerPortalRoot.querySelector("#clone-with-ssh")) my_ssh_alias_url_elem.parentElement.removeAttribute("hidden"); else my_ssh_alias_url_elem.parentElement.setAttribute("hidden", ""); } } } }); observer.observe(document, { childList: true, subtree: true }); // Your new project try { let parent_elem = document.querySelector('#empty-setup-clone-url').parentElement.parentElement.parentElement.parentElement let parent_elem_2 = parent_elem.cloneNode(true) let url_input = parent_elem_2.querySelector('#empty-setup-clone-url') url_input.removeAttribute('id') let alias = GM_getValue("alias") || "github.com"; url_input.value = `git@${alias}:${get_repository_path()}.git`; let copy_btn = url_input.nextElementSibling copy_btn.addEventListener("click", () => { GM_setClipboard(url_input.value); }); parent_elem.parentElement.insertBefore(parent_elem_2, parent_elem.nextElementSibling) parent_elem_2.querySelector('button[data-ga-click~="HTTPS"]').parentElement.remove() } catch(error){}
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址