‘" t ." Title: git-process ." Author: [see the “AUTHOR” section] ." Generator: DocBook XSL Stylesheets v1.78.1 <docbook.sf.net/> ." Date: 04/20/2016 ." Manual: \ & ." Source: \ & ." Language: English ." .TH “GIT-PROCESS” “1” “04/20/2016” “\ &” “\ &” ." —————————————————————– ." * Define some portability stuff ." —————————————————————– ." ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ." bugs.debian.org/507673 ." lists.gnu.org/archive/html/groff/2009-02/msg00013.html ." ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie n(.g .ds Aq (aq .el .ds Aq ’ ." —————————————————————– ." * set default formatting ." —————————————————————– ." disable hyphenation .nh ." disable justification (adjust text to left margin only) .ad l ." —————————————————————– ." * MAIN CONTENT STARTS HERE * ." —————————————————————– .SH “NAME” git-process - A suite of tools to make it easy to use an easy and robust git process&. .SH “DESCRIPTION” .sp fIgit-process(1)fR consists of a small suite of tools that make it easy to follow a simple, consistent process that scales from simple one-person projects to very large (dozens of developers) collaboration&. It does this by taking advantage of “classic” methodologies like “Git Flow” and GitHub pull requests to have “just enough” process&. See fBWORKFLOW EXAMPLESfR to see this in practice&. .SH “COMMON OPTIONS” .PP fB--infofR .RS 4 Informational messages; show the major things this is doing (fBdefault: truefR) .RE .PP fB-q, --quietfR .RS 4 Quiet messages; only show errors .RE .PP fB-v, --verbosefR .RS 4 Verbose messages; show lots of details on what this is doing .RE .PP fB--versionfR .RS 4 Print version and exit .RE .SH “CONFIGURATION” .PP fBgitProcess&.remoteNamefR .RS 4 Allows you to explicitly set the remote server name to use&. Defaults to the first server name reported by fIgit-remote(1)fR&. .RE .PP fBgitProcess&.integrationBranchfR .RS 4 Allows you to explicitly set the integration branch to use&. Defaults to “master”&. .RE .PP fBgitProcess&.defaultRebaseSyncfR .RS 4 Should fIgit-sync(1)fR use fB--rebasefR by default instead of fB--mergefR? Defaults to fBtruefR&. .RE .PP fBgitProcess&.github&.authtokenfR .RS 4 Not meant to be set manually, this is the OAuth token used to communicate with the GitHub server&. If it is not set, the user will be prompted for their credentials&. .RE .PP fBgithub&.userfR .RS 4 If OAuth needs to prompt for credentials, if this value is set then it is used as the username&. Otherwise it is unused&. .RE .SH “WORKFLOW EXAMPLES” .SS “WORKING ALONE ON A LOCAL-ONLY PROJECT” .sp Jim is working on “my_project” and needs to start work on a new feature&. .sp .if n {\ .RS 4 .} .nf [a_branch]$ git new-fb save_the_planet
Creating save_tp off of master
[save_the_planet]$ .fi .if n {\ .RE .} .sp He does lots of work&. Checkin, checkin, checkin&. .sp A sudden new brilliant idea happens&. .sp .if n {\ .RS 4 .} .nf [save_the_planet]$ git new-fb shave_the_bunnies
Creating shave_the_bunnies off of master
[shave_the_bunnies]$ .fi .if n {\ .RE .} .sp After creating a Sheering class and tests, he commits his changes&. .sp .if n {\ .RS 4 .} .nf [shave_the_bunnies]$ git commit [shave_the_bunnies]$ git to-master
Rebasing shave_the_bunnies against master Removing branch \*(Aqshave_the_bunnies\*(Aq
[parking]$ .fi .if n {\ .RE .} .sp Time to get back to work on “save_the_planet”&. .sp .if n {\ .RS 4 .} .nf [parking]$ git checkout save_the_planet [save_the_planet]$ git sync
Rebasing save_the_planet against master
[save_the_planet]$ .fi .if n {\ .RE .} .sp Do more work&. Commit&. Commit&. Commit&. .sp .if n {\ .RS 4 .} .nf [save_the_planet]$ git sync
Rebasing save_the_planet against master
[save_the_planet]$ .fi .if n {\ .RE .} .sp Liking to have a clean history, he squashes and edits the commits to hide the evidence of false starts and stupid ideas so that anyone who sees the code in the future will think he was simply a genius&. .sp .if n {\ .RS 4 .} .nf [save_the_planet]$ git rebase -i
Rebasing save_the_planet against master
[save_the_planet]$ git to-master
Rebasing save_the_planet against master Removing branch \*(Aqsave_the_planet\*(Aq
[parking]$ .fi .if n {\ .RE .} .sp Time to release to a grateful world&. .SS “WORKING WITH A TEAM” .sp John, Alice, Bill and Sally are working on “big_monies&.” Alice and John are pairing and need to start work on a new feature&. .sp .if n {\ .RS 4 .} .nf john-$ git new-fb steal_underpants
Fetching the latest changes from the server Creating steal_underpants off of origin/master
john-$ .fi .if n {\ .RE .} .sp They do lots of work&. Checkin, checkin, checkin&. It has a lot of steps&… .sp Meanwhile Bill has been working on his great idea: .sp .if n {\ .RS 4 .} .nf bill-$ git new-fb awesomo4000
Fetching the latest changes from the server Creating awesomo4000 off of origin/master
bill-$ .fi .if n {\ .RE .} .sp He creates his “Laaaaame” class and checks it in, with a pull request asking Sally to do a code review&. .sp .if n {\ .RS 4 .} .nf bill-$ git commit bill-$ git pull-req “A&.W&.E&.S&.O&.M-0 4000 prototype” e
\-d "@sally, can you make sure Butters won\*(Aqt recognize it?" Pushing to \*(Aqawesomo4000\*(Aq on \*(Aqorigin\*(Aq\&. Creating a pull request asking for \*(Aqawesomo4000\*(Aq to be merged into \*(Aqmaster\*(Aq on big_monies\&. Created pull request at https://github\&.com/big_monies/pull/3454
bill-$ .fi .if n {\ .RE .} .sp Sally sees the email&. After looking at it in the web interface, she wants to test it&. .sp .if n {\ .RS 4 .} .nf sally-$ git pull-req 3454
Getting #pr_number Fetching the latest changes from the server new branch: awesomo4000 Setting upstream/tracking for branch \*(Aqawesomo4000\*(Aq to \*(Aqorigin/master\*(Aq\&.
sally-$ git sync
Fetching the latest changes from the server Rebasing awesomo4000 against origin/master Pushing to \*(Aqawesomo4000\*(Aq on \*(Aqorigin\*(Aq\&.
sally-$ .fi .if n {\ .RE .} .sp After verifying that the tests still work and “it(cqs all good” she promotes the code to integration&. .sp .if n {\ .RS 4 .} .nf sally-$ git to-master
Fetching the latest changes from the server Rebasing awesomo4000 against origin/master Pushing to \*(Aqawesomo4000\*(Aq on \*(Aqorigin\*(Aq\&. Removing branch remote \*(Aqawesomo4000\*(Aq Removing branch local \*(Aqawesomo4000\*(Aq Closing a pull request #3454 on origin\&.
sally-[parking]$ .fi .if n {\ .RE .} .sp Over lunch Alice gets a brainstorm (“a duck and rubber hose!”) and rushes off to her computer: .sp .if n {\ .RS 4 .} .nf alice-$ git sync steal_underpants
Fetching the latest changes from the server Creating steal_underpants off of origin/steal_underpants Setting upstream/tracking for branch \*(Aqsteal_underpants\*(Aq to \*(Aqorigin/master\*(Aq\&.
alice-$ .fi .if n {\ .RE .} .sp She makes her changes, syncs back up with the server, and heads over to pair with John again&. .sp .if n {\ .RS 4 .} .nf alice-$ git commit alice-$ git sync
Fetching the latest changes from the server Rebasing steal_underpants against origin/master Pushing to \*(Aqsteal_underpants\*(Aq on \*(Aqorigin\*(Aq\&.
alice-$ .fi .if n {\ .RE .} .sp John, meanwhile, had made some changes of his own&. .sp .if n {\ .RS 4 .} .nf john-$ git commit john-$ git sync
Fetching the latest changes from the server Remote branch has changed Rebasing steal_underpants against origin/steal_underpants Rebasing steal_underpants against origin/master Pushing to \*(Aqsteal_underpants\*(Aq on \*(Aqorigin\*(Aq\&.
john-$ .fi .if n {\ .RE .} .sp At this point, his local branch has Alice(cqs change as well as Bill and Sally(cqs A&.W&.E&.S&.O&.M-O 4000 enhancements&. .sp After confirming with Alice and Bill that everything looks good, he pushes his changes up for integration&. .sp .if n {\ .RS 4 .} .nf john-$ git to-master
Fetching the latest changes from the server Rebasing steal_underpants against origin/master Pushing to \*(Aqsteal_underpants\*(Aq on \*(Aqorigin\*(Aq\&. Removing remote branch \*(Aqsteal_underpants\*(Aq Removing local branch \*(Aqsteal_underpants\*(Aq
[parking]$ .fi .if n {\ .RE .} .sp Profit!! .SH “CONTROL FILES” .PP fBgitprocess-sync-fR*fB--fR* .RS 4 To help make the process simpler and more reliable, fIgit-sync(1)fR will put a file in the “fI&.gitfR” directory that contains the SHA-1 of the last successful sync to the server&. fIgit-to-master(1)fR will remove the file as part of its normal “housekeeping&.” .RE .SH “SEE ALSO” .sp fBgit-syncfR(1), fBgit-to-masterfR(1), fBgit-new-fbfR(1), fBgit-pull-reqfR(1) .SH “BUGS” .sp Known bug list: github&.com/jdigger/git-process/issues?state=open .SH “AUTHOR” .sp git-process has been written primarily by Jim Moore&. .SH “RESOURCES” .sp Main web site: github&.com/jdigger/git-process