Want to fork your own gists? No fork button? No problem! Install this user script by clicking refork.user.js' "raw" link down below: ⇓
-
-
Save johan/1306266 to your computer and use it in GitHub Desktop.
// ==UserScript== | |
// @name (Re)fork any gist, including your own | |
// @namespace https://github.com/johan | |
// @version 2.0 - updated 2015-06-21 | |
// @description Adds a "fork" button to gists missing one at gist.github.com, so you can create multiple forks | |
// @match https://gist.github.com/* | |
// @include https://gist.github.com/* | |
// ==/UserScript== | |
if (/^\/[^\/]+\/\d+/.test(location.pathname) && | |
!document.querySelector('form[action$="/fork"]')) { | |
var actions = document.querySelector('.gisthead .pagehead-actions') | |
, auth = document.querySelector('input[name="authenticity_token"]').outerHTML | |
, fork = document.createElement('li') | |
, url = location.pathname + '/fork' | |
; | |
fork.innerHTML = '<form accept-charset="UTF-8" action="'+ url + '" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓">' + auth + '</div><button class="btn btn-sm" type="submit"><span class="octicon octicon-repo-forked"></span>Fork</button></form>'; | |
actions.appendChild(fork); | |
} |
This will never work again unless github blesses it. Do a view-source and search for authenticity_token
. Game over, man. Game over.
This no longer works because the fork link has been replaced with a form that includes a authenticity_token
field. I don't think there is any way around that from the browser.
I now use https://github.com/defunkt/gist from the CLI to:
- # Define your original gist url (I have to use the ssh url to get it to work for my
credential-helper
)
original_url="[email protected]:1306266.git"
- # Create a new gist
url="$(date | gist -f temp)"
- # Clone it
git clone $url; cd $(basename $url)
- # Add the original gist as a remote and fetch it
git remote add alt $original_url; git fetch alt
- # Check out the original
git reset --hard alt/main
- # Push to the new gist
git push -f origin main
Note
The #
are in there so you can copy-pasta the whole block into the terminal 😉
Update on 2022/04/14
- I change the branch name to
main
because github changed their default branch causing my code above to error. - Here is an example of the result https://gist.github.com/RichardBronosky/43023e5b06dc17bd465293bcdf3d8f00/revisions
@RichardBronosky I assume github does not recognize it as a fork and doesn't link the two gists together, right?
@RichardBronosky I assume github does not recognize it as a fork and doesn't link the two gists together, right?
@ackvf I updated my comment to include a link to a fork I just made of this gist. The gist.github.com web interface doesn't indicate the fork, but the complete history is there including accurate authors and dates. I have an old fork of this repo https://gist.github.com/RichardBronosky/4d8a7aed9f8dc40eea669a0985ac8d79 and it does indicate the fork. I'll compare the 2 and see if I can find anything in .git
folder that will serve as the fork indicator.
Thank you. I've already been cloning my gists using Sourcetree and actually I've been using local repo to manipulate / clean the gist history.
Anyway, forking own repo does not seem to be supported at all: "message": "You cannot fork your own gist."
@RichardBronosky did you ever figure out what specifically makes a fork be indicated in the gist web interface?
found updated version here:
https://gist.github.com/U-D13/7085254