From de8e1a5a9d20be654e5cab1c35b1afea364be81d Mon Sep 17 00:00:00 2001 From: "Derek S. Ray" Date: Sun, 15 Mar 2015 14:28:01 -0400 Subject: [PATCH] Some few updates/additions; clean up formatting --- DEVEL/git_recipes.txt | 87 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 70 insertions(+), 17 deletions(-) diff --git a/DEVEL/git_recipes.txt b/DEVEL/git_recipes.txt index 49c7a7cca..71ce0e5dc 100644 --- a/DEVEL/git_recipes.txt +++ b/DEVEL/git_recipes.txt @@ -3,13 +3,13 @@ reference for basic tasks while you get up to speed. ------------------------ -git checkout [-f] (branch) +[*] git checkout [-f] (branch) Switch your local repository to be at the most recent commit of (branch). Including -f will discard changes made in the working directory. -git status [-uall | -uno] +[*] git status [-uall | -uno] Shows all changed files in your local repository and also a list of the ones you have staged for commit. @@ -17,10 +17,10 @@ Including -uall will also show you all untracked files in all subdirectories. Including -uno will show you _no_ untracked files. -git log [-NUM] -git log -git log [--pretty=one] -git log (branch) +[*] git log [-NUM] +[*] git log +[*] git log [--pretty=one] +[*] git log (branch) For a full explanation of all the arguments you can pass to 'log', please see the manual; there are a lot and these are just a few of the common ones. For @@ -33,13 +33,13 @@ you specify: (branch): show the commits from (branch) instead of the current one -git add (filename) +[*] git add (filename) Adds the changes you've made in (filename) to the pre-commit staging area. (also referred to as the 'index') -git commit [-a] [-m "text"] +[*] git commit [-a] [-m "text"] Commits all staged changes (in the index) to this branch in your local repo from your current position. @@ -48,7 +48,7 @@ Including -m will use "text" as the commit message instead of opening an editor window for you to create one. -git push [--all] [-u origin (branch)] +[*] git push [--all] [-u origin (branch)] Sends all your commits for the current branch to the centralized repo. Including --all will send the commits for _all_ branches. @@ -57,11 +57,11 @@ created; it establishes the connection between local and remote for that branch. -git reset [--hard] (filename) +[*] git reset [--hard] (filename) Without any parameters, unstages the changes for (filename) from the index; does not change the working tree. This is the equivalent of the command -git reset --mixed (filename); git reset --soft (filename) has no effect. +[*] git reset --mixed (filename); git reset --soft (filename) has no effect. With --hard, unstages (filename) from the index and reverts (filename) in the working tree to the most recent commit. @@ -74,7 +74,7 @@ with it. But at the same time, for people who are adapting to a commit not also automatically being a send, it's nice for them to know how to undo one in case they do something wrong. thoughts?] -git reset [--soft | --mixed | --hard] HEAD~1 +[*] git reset [--soft | --mixed | --hard] HEAD~1 *** WARNING *** Never, EVER do this to a commit that you have already pushed; you will be rewriting history on other people's machines and this will @@ -90,26 +90,79 @@ With --hard, does everything --mixed does but also reverts the working tree to the prior commit. *** WARNING *** --hard will effectively delete a commit and "lose" the changes. +[/end area-of-concern] -git fetch [-a] +[*] git fetch [-a] Retrieve commits from the remote repository to your machine. Including -a will get commits for all branches. +Does NOT merge them into your local repository. -git pull +[*] git pull Incorporate any fetched commits for the current branch into your repository -and update your position accordingly. +and update your position accordingly. This will create a merge commit (noting +that you merged a branch into itself). -git merge (branch) [--no-commit] +[*] git rebase [no-arguments version ONLY] + +Incorporate fetched commits for the current branch into your repository, and +replay any local commits and changes afterwards on top. + +Quality picture-pages ASCII art: + + E---F---G---H (remote changes) + / + / +(branch 'frog') A---B---C---D---E'---F' (your local changes) + +After 'git fetch' and 'git rebase', it will look like this: + + --- (remote HEAD) + | + V +(branch 'frog') A---B---C---D---E---F---G---H---E'---F' + ^ ^ + | | + -------- (to be pushed) + + +[*] git branch (branch) + +Creates a new branch from the current commit you're pointed to. +Does not automatically checkout (switch to) the branch. + + +[*] git checkout -b (branch) + +Creates a new branch from the current commit you're pointed to, and +automatically checks out that branch. + + +[*] git branch --list | [--all | -a] | [--remotes | -r] + +Lists all branches matching . +With --all instead, lists all branches (including remotely tracked ones). +With --remotes instead, lists only remote branches. + + +[*] git merge (branch) [--no-commit] Merges all the changes from (branch) since it last diverged from a common ancestor into your current branch. With --no-commit, does not automatically create a merge entry in the log but leaves all the merged files in your working directory; to complete the merge -you must commit them manually later (likely after you have edited them). +you must commit them manually later (likely after you have edited them). This +more accurately mimics the merge behavior of svn [and cvs?] + + +======================================= +Typical workflows for common activities +======================================= + +{To be added in near future: DSR 3/15} -- 2.40.0