A lot of times we have to look at files on GitHub. But this intrudes our ideal command-line workflow, having to switch to a browser and navigate to the URL. Wouldn't it be nice to just be able to open that file from the command line?
Git It On, the plugin for zshell, comes in here.
gitit
-- open your current folder, on your current branch, in GitHub or GitLabgitit <folder or file>
-- opens that folder in your current branch (paths are relative)
Note: This plugin is stable, but still in active development. I do not yet consider this plugin finished.
Note: This was built on a Mac. Support for Linux is experimental, and has not been tested by the plugin author.
--
Assuming you have oh-my-zsh, you can simply write
git clone https://github.com/peterhurford/git-it-on.zsh ~/.oh-my-zsh/custom/plugins/git-it-on
echo "plugins+=(git-it-on)" >> ~/.zshrc
(Alternatively, you can place the git-it-on
plugin in the plugins=(...)
local manually.)
--
Add antigen bundle peterhurford/git-it-on.zsh
to your .zshrc
wherever you're adding the other antigen bundles.
If you’re using Zgen, add zgen load peterhurford/git-it-on.zsh
to your .zshrc
wherever you're adding your other zgen plugins.
If you're lame and use bash, you can install this directly to your ~/.bash_profile
:
curl -s https://raw.githubusercontent.com/peterhurford/git-it-on.zsh/master/git-it-on.plugin.zsh >> ~/.bash_profile
gitit <folder or file> <branch>
-- opens that folder on the specified branch.gitit repo <username> <reponame>
-- opens up the specified repository.gitit branch <branch>
-- open the repo for a chosen branch.gitit compare
-- opens the compare file between your branch and mastergitit compare <branch>
-- opens the compare file for a chosen branch (compared with master).gitit commits
-- opens the commits for your current branchgitit commits <branch>
-- opens the commits for a chosen branch.gitit issues
-- open the list of issues.gitit history <filename>
-- opens the github history page for the file.gitit history <filename> <branch>
-- opens the history page for the file on the chosen branch.gitit pulls
-- open the list of pull requests for the repo.gitit pulls <filters>
-- open the list of pull requests with filters (e.g.,is:open
,author:peterhurford
)gitit pulls <number>
-- open the pull request for that number.gitit branches all
-- open up a list of all the branches in the repo.gitit branches active
-- open up a list of active branches.gitit branches stale
-- open up a list of stale branches.gitit branches mine
-- open up a list of your branches.gitit grep <term>
-- opens the github search page for your termgitit ctrlp
-- opens the github file finder for master branch (note that you cannot pass search terms directly from the command line)gitit ctrlp <branch>
-- opens the github file finder for your desired branch
gitit <folder or file> <branch>
-- opens that folder on the specified branch.gitit glcompare
-- open a comparison for current branch tomaster
gitit glcompare <src>
-- open a comparison forsrc
tomaster
gitit glcompare <src> <target>
-- open a comparison forsrc
totarget
gitit glcommits <file>
-- open all commits; optionally specifyfile
for all commits affecting itgitit glbranches
-- open the list of branchesgitit glhistory <file> <branch>
-- open history of the current branch; optionally specifyfile
andbranch
gitit glmerges
-- open merge requests pagegitit glmerges <query>
-- open the list of pull requests with query (e.g.variable_1
)gitit glmerges <number>
-- open page for merge request<number>
gitit glissues <query|number>
-- similar toglmerges
gitit glctrlp <query>
-- search using the gitlab file findergitit glnetwork
-- open the GitLab repository graph
Gitlab commands also have short alternatives:
glcompare|glcm, glcommits|glco, glhistory|glh, glbranches|glb, glmerges|glm, glissues|gli, glctrlp|glcr, glnetwork|gln
TODO: Make and link vim companion plugin.
You can make commands faster by using aliases. Put the following in your .zshrc
(or .bash_profile
)
#Gitit Aliases
alias myrepos="gitit repo peterhurford" #put your name here (usage: `myrepos <reponame>` to open up your repo.)
alias compare="gitit compare"
alias commits="gitit commits"
alias branch="gitit branch"
alias gistory="gitit history"
alias prs="gitit pulls"
alias myprs="gitit pulls author:peterhurford" #put your name here
alias mybranches="gitit branches mine"
alias gitgrep="gitit grep"
alias ctrlp="gitit ctrlp"
Feel free to change the aliases to whatever you'd like. You can even make them shorter, but the above is what I use. Note that these aliases are not included by default.
If you want more git-related aliases for making your git workflow faster, also look at my Git-aliases.zsh plugin.