At my work I'm on an agile team and we do pair programming.  Here are some git commands I find useful and use almost every day:

We always make sure to branch off the latest master when creating new feature branches:

git checkout master && git pull
git checkout -b new-feature

At the end of the day, if we're not done with the new feature we create a "work in progress" WIP commit:

git add .
git commit -m 'WIP'

And push it up:

git push origin head

* As a rule we don't ever leave work on our development computers overnight.
* If someone is out the next day someone else can pickup that work and continue on.
* Pushing the code triggers a CI build showing any issues with specs as early as possible. 

You can also use the feature branch name here:

git push origin new-feature

"head" is easier to remember at the end of the work day, so that's what I always use.

The next day we may find we're pairing with different people.

If I'm driving again then I will reset my feature branch back to before the WIP commit to continue on with development:

git reset head~1

If the other person was driving last I will checkout the branch they WIP'd and then reset the commit:

git checkout master && git pull
git checkout new-feature
git reset head~1

If I already have the branch checked out locally I'll do a hard reset to sync up with the contents of our remote branch:

git reset --hard origin/new-feature

When the development feature branch is complete I will rebase it against master before merging:

git rebase master

If I have more than one commit on the feature branch then I will rebase interactively and squash the commits:

git rebase -i master

Side note: Dash (-) is very useful with git.  It means "the last branch I was on".  So if I was on my new-feature branch and switched to master and then wanted to switch back I could do:

git checkout -

Finally, when I'm ready to merge my feature branch to master I use --no-ff:

git checkout master
git merge --no-ff new-feature

This explicitly creates a merge commit.

I could also use dash here since my feature branch was likely the last branch I was on:

git merge --no-ff -

The git-pair gem is very useful for pair programming:

https://github.com/chrisk/git-pair

It lets you commit as a pair:

git pair gd yc
git add . && git commit -m 'WIP'

A configured .pairs file might look something like this:

pairs:
    yc: Yungchih Chen; yunchih.chen
    gd: Greg Donald; greg.donald
email:
    domain: example.com

Happy pairing!

 

   Recent articles
Console Blackjack in Elixir
Git commands for pair programming
Change default SSH port on Fedora
Console Blackjack in Crystal
Nautical War
   Tags
android (1) apache (1) apple (1) bash (2) bashrc (1) battleship (1) blackjack (9) c (2) c++ (1) callproof (1) clang (2) clang++ (1) console (1) crm (1) crystal (1) data (1) debian (4) diff (1) django (2) elixir (1) enterprise (1) fedora (1) firewall (1) freebsd (1) g++ (1) games (1) gcc (1) git (4) github (1) gmail (1) go-lang (3) google (1) gourse (1) kernel (3) latin1 (1) linux (4) lottery (1) microsoft (1) module (1) mongodb (1) mp3s (1) mutt (1) nautical (1) pairing (1) pair-programming (1) patch (1) perl6 (1) postgresql (2) powerball (1) psql (1) python (2) python3 (1) raspberrypi (1) reactjs (2) reversi (1) sdl (1) sed (1) selinux (1) ssh (1) stack (1) testing (2) trace (1) typescript (2) ubuntu (2) utf8 (1) virus (1) war (1)
   Twitter

Copyright © 2019

GregDonald.com · Contact

All Rights Reserved