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:

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:

    yc: Yungchih Chen; yunchih.chen
    gd: Greg Donald; greg.donald

Happy pairing!

   Page Updates
RetroPie Arcade
Customize New Linux Install
Cisco CCNA Study :: Home Lab Notes
PostgreSQL Backup Script
Generate new Factorio map
   Recent Articles
Debug a Linux Kernel in QEMU
Install xfce4 on Debian
Console Blackjack in Perl
Game of Life in C++ using the SDL2
active-record (2) android (1) apache (1) apt (1) arcade (1) awk (2) backup (1) bash (2) bashrc (1) battleship (1) bdd (1) blackjack (12) book (1) books (1) build (1) c (2) c++ (2) cacti (1) calculator (1) capybara (1) ccna (1) cisco (1) clang (1) clang++ (1) console (5) cpp (2) crm (1) crystal (1) data (1) database (1) debian (6) diff (1) elixir (1) factorio (2) fedora (1) firewall (1) g++ (1) game (4) games (1) gcc (1) gem (1) git (3) github (1) gmail (1) go-lang (3) google-chrome (1) haml (1) home (1) infix (1) ipv4 (1) irssi (1) kernel (4) lab (1) latin1 (1) life (1) linux (6) lottery (1) matrix (1) meta (1) moarvm (1) model (1) module (1) mongodb (1) mp3s (1) mutt (1) nautical (1) nqp (1) object (1) oidentd (1) operator (1) orm (2) pairing (1) pair-programming (1) patch (1) perl (1) pigpen (1) postgresql (3) powerball (1) programming (1) psql (1) python (2) python3 (1) qemu (1) raku (16) raspberry-pi (1) raspberrypi (1) reactjs (2) readline (1) retropie (1) reversi (1) rhel (1) ruby (1) sdl2 (4) sed (1) selenium (1) selinux (1) snmpd (1) split (1) ssh (1) subnet (1) systemd (1) template (1) test (1) testing (2) tictactoe (1) typescript (2) ubuntu (1) utf8 (1) war (1) xargs (1) xfce4 (1) xvfb (1) zef (1) zsh (1)

Copyright © 2005 - 2022 · Contact · Nautical War · CRM12

All Rights Reserved