Skip to content

Instantly share code, notes, and snippets.

@igrigorik
Last active December 22, 2023 23:55
Show Gist options
  • Save igrigorik/6666860 to your computer and use it in GitHub Desktop.
Save igrigorik/6666860 to your computer and use it in GitHub Desktop.
Open GitHub URL for current directory/repo...
alias gh="open \`git remote -v | grep git@github.com | grep fetch | head -1 | cut -f2 | cut -d' ' -f1 | sed -e's/:/\//' -e 's/git@/http:\/\//'\`"
@chevdor
Copy link

chevdor commented Feb 26, 2020

Because one more is likely a must :)

function gh() {(
    set -e
    git remote -v | grep push
    remote=${1:-origin}
    echo "Using remote $remote"

    URL=$(git config remote.$remote.url | sed "s/git@\(.*\):\(.*\).git/https:\/\/\1\/\2/")
    echo "Opening $URL..."
    open $URL
)} 

Tested on MacOS:

  • calling gh from a non git repo gives you an error message and exists
  • calling gh from a repo... opens it. Works with github, gitlab, etc...
  • calliing gh <remote> opens . For instance gh upstream.

@shinyaohtani
Copy link

shinyaohtani commented Mar 19, 2020

I developed a small gem giturl to open github and github enterprise web pages for specified directories. Please try it.
(Sorry, I didn't know igrigorik/github.bash.)

  • usage

    $ giturl -o .
    https://github.com/shinyaohtani/giturl/lib/
    
  • how giturl works
    I used these four git commands.

    $ git rev-parse --is-inside-work-tree
    $ git rev-parse --show-prefix
    $ git rev-parse --abbrev-ref HEAD
    $ git config --get remote.origin.url
  • installation

    $ gem install giturl
  • source code
    https://github.com/shinyaohtani/giturl

@paulmicheli
Copy link

paulmicheli commented Sep 2, 2020

Just and FYI for Linux users

"open" is native on OS X, on linux you can just define it as alias open=xdg-open,

#Open GitHub from Repo
alias gh="xdg-open \`git remote -v | grep git@github.com | grep fetch | head -1 | cut -f2 | cut -d' ' -f1 | sed -e's/:/\//' -e 's/git@/http:\/\//'\`"

@davetownsend
Copy link

this is a nice tool for doing this kinda stuff https://github.com/paulirish/git-open

@ricardoribas
Copy link

@JustinTRoss
Copy link

JustinTRoss commented Dec 30, 2020

The alias commands above using print need the argument escaped. awk '{print $2}' should be awk '{print \$2}'.

Full command here:

alias gh="open \`git remote -v | grep fetch | awk '{print \$2}' | sed 's/git@/http:\/\//' | sed 's/com:/com\//'\`| head -n1"

@kuncevic
Copy link

kuncevic commented Sep 2, 2021

This one works great for me https://github.com/paulirish/git-open

@eytanhanig
Copy link

eytanhanig commented Sep 30, 2021

I recently updated mine to work regardless of whether you are in the current repo. It supports both relative and absolute paths:

#!/bin/sh

##  Open file or directory in web browser
##  Syntax: git-web $path [$branch]
path=${1:-"."}

if [ -d ${path} ]; then
  file_name=""
  cd ${path}
else
  file_name=$(basename ${path})
  cd $(dirname ${path})
fi
project_url=$(git config remote.origin.url | sed "s~:~/~" | sed "s~git@~https://~" | sed "s~\.git~~")
branch=${2:-$(git symbolic-ref --quiet --short HEAD)}
git_directory=$(git rev-parse --show-prefix)
echo ${project_url}/tree/${branch}/${git_directory}${file_name}
open ${project_url}/tree/${branch}/${git_directory}${file_name}

@kartikeytewari
Copy link

With the new gh cli tool just use: gh repo view --web

@nickangtc
Copy link

If using VS Code, one could also install the GitLens extension (good for other things too) and use the command palette (cmd + shift + P) > GitLens: Open Repository on Remote

@yohanb
Copy link

yohanb commented Jun 2, 2022

With the new gh cli tool just use: gh repo view --web

even easier, gh browse

@joeflack4
Copy link

joeflack4 commented Jun 4, 2022

@drewbo worked for me on mac, thanks

Edit: Well, I don't actually want to use this, because when I source my .bash_profile now, I get this as a result:

fatal: not a git repository (or any of the parent directories): .git

@mathieux51
Copy link

With Github CLI, this is exactly what I was looking:

gh browse .

Thanks @yohanb 🙏

@giovannipcarvalho
Copy link

Quick and dirty if you already have the vim plugin rhubarb installed:

vim +GBrowse +q

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment