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
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'
.pairs file might look something like this:
pairs: yc: Yungchih Chen; yunchih.chen gd: Greg Donald; greg.donald email: domain: example.com
|Customize New Linux Install|
|Cisco CCNA Study :: Home Lab Notes|
|PostgreSQL Backup Script|
|Generate new Factorio map|
|Install and setup snmpd on RedHat Enterprise Linux|
|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 (7) diff (1) elixir (1) factorio (2) fedora (1) firewall (1) freebsd (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 (7) lottery (1) matrix (1) meta (1) microsoft (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) stack (1) subnet (1) systemd (1) template (1) test (1) testing (3) tictactoe (1) trace (1) typescript (2) ubuntu (2) utf8 (1) virus (1) war (1) xargs (1) xfce4 (1) xvfb (1) zef (1) zsh (1)|
Copyright © 2005 - 2021
GregDonald.com · Contact · EUGOR · Nautical War · CRM12
All Rights Reserved