Settings

Theme

Most engineers have Git aliases; what are yours?

will-keleher.com

3 points by gcmeplz 10 months ago · 8 comments

Reader

LinuxBender 10 months ago

I have not used this in a while but here is an old function from /etc/profile.d/functions.sh on Alpine that I used to tame some unwieldy .git folders in the past. No idea if any of it has been deprecated. It's like one big monster alias. Nowadays I instead just clone a repo to a ramdisk, purge the .git folder and then rsync it to my hoarded stash of git repos.

    function gitgc()
    {
    git config --global core.compression 6
    git config --global core.loosecompression 6
    git config --global pack.compression 6
    git config --global core.autocrlf input
    git config --global alias.st status
    git config --global alias.ci commit
    git config --global alias.co checkout
    git config --global alias.br branch
    git config --global branch.autosetuprebase always
    git config --global pack.threads "2"
    git config --global pack.windowMemory "100m"
    git config --global pack.packSizeLimit "100m"
    export GIT_HTTP_MAX_REQUEST_BUFFER=100M
    git config --global ssh.postBuffer 1000000000
    git config --global http.postBuffer 1000000000
    # echo '*.zip -delta' > .gitattributes
    # echo '*.jpg -delta' >> .gitattributes
    # echo '*.bin binary -delta' >> .gitattributes
    git fsck --full --unreachable;
    git repack -a -d -F --depth=1 --window=10;
    git reflog expire --all --expire=now --expire-unreachable=now;
    git repack -a -d -F --depth=1 --window=10;
    git gc --prune=now --aggressive;
    git fsck --full --unreachable;
    }
  • gcmeplzOP 10 months ago

    > Nowadays I instead just clone a repo to a ramdisk, purge the .git folder and then rsync it to my hoarded stash of git repos.

    You're probably already doing this, but if you do a shallow clone (git clone --depth=1 ..) you'll limit the amount that ends up in .git that you need to purge.

    Even with shallow clones, I'm still surprised that it ends up with a .git that's a decent percentage of the total. I just tried it on a repo and ended up with 16% of the total size being .git. I would have guessed that it'd be much smaller than that.

    • LinuxBender 10 months ago

      I had also tried that but some repos still get fairly big and all I wanted was the code not the .git since I am not a proper developer. To your point they can still be quite large.

          cd /dev/shm/block && git clone -j4 --depth=1 --branch=master https://github.com/firehol/blocklist-ipsets.git
      
          du --max-depth 1 -hc
          24M ./ipip_country
          4.0M ./ipdeny_country
          9.6M ./ip2location_country
          6.9M ./geolite2_country
          25M ./.git
          140M .
          140M total
      
      It's not awful but I currently keep up to date copies of about 300 git repos and if I keep all the big ones it can add up to several GB of data I do not need. For now I just clone to a ramdisk and whack the .git directory for several of the big ones before I rsync back to disk. I probably lose some interesting history doing that.
metadat 10 months ago

.bashrc:

  alias g='git'
.gitconfig:

Tons of aliases, but most often used are:

  a = add
  amend = commit --amend
  b = branch
  co = checkout
  po = pull origin
  fa = fetch --all
  reb = rebate
  reba = rebase --abort
  rebm = rebase master
  unstage = git rm --cached
As TFA demonstrates, it's also possible to alias full-blown shell commands and even multiple shell (or git) commands, which is powerful.

Someday I would like to give jj a real try, too.

https://github.com/jj-vcs/jj

gregjor 10 months ago

  alias lg='lazygit'
JTyQZSnP3cQGa8B 10 months ago

> Most engineers

I don't believe that but I use https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git

  • gcmeplzOP 10 months ago

    Should probably say "most engineers I've worked with," but I think that's mostly a testament to the git workflows where I've worked (lots of small commits and short-lived branches).

    Plus, once you pair with one person with snazzy aliases, it might make you want to make your own

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection