Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
docs:git:git_walkthrough [2009/11/15 22:11] – created billh | docs:git:git_walkthrough [2012/10/09 14:30] (current) – billh | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== git walkthrough ====== | ====== git walkthrough ====== | ||
- | * (introduce yourself to git)< | + | * this page mostly shows command line options; after you are familiar with them, learn how to use the git gui programs too for efficiency: |
+ | * [[.:git gui]] | ||
+ | * [[.: | ||
+ | * know how to get help first!< | ||
+ | git help (general overview) | ||
+ | |||
+ | git help [command], ie: | ||
+ | git help init | ||
+ | git help checkout | ||
+ | git help branch | ||
+ | git help status | ||
+ | git help log | ||
+ | </ | ||
+ | * introduce yourself to git; this sets up your [[.: | ||
git config --global user.name "Your Name" | git config --global user.name "Your Name" | ||
git config --global user.email " | git config --global user.email " | ||
</ | </ | ||
- | * start with an existing | + | * start with an existing |
* cd inside the project root, then create a repository:< | * cd inside the project root, then create a repository:< | ||
git init | git init | ||
</ | </ | ||
- | * (notice that a .git directory will be created at project root) | + | * :!: (notice that a .git directory will be created at project root) |
+ | * git is cool - the complete repository (all history) is stored inside this .git directory | ||
+ | * even if you clone a repository from someone else, you have the full history available to work with - no further connection with them is required, unless you want future updates or to share code together | ||
+ | * **IF YOU ARE USING CYGWIN ON WINDOWS...**< | ||
+ | git config core.filemode false | ||
+ | </ | ||
+ | * this tells git to ignore filemode permissions which do not work correctly on a non-unix host; if you don't do this, git will always complain that you are changing file permissions when you did nothing | ||
* add all content to the index (some call it the cache, it means what is staged for the next commit)< | * add all content to the index (some call it the cache, it means what is staged for the next commit)< | ||
git add . | git add . | ||
Line 15: | Line 34: | ||
git commit -m " | git commit -m " | ||
</ | </ | ||
- | * (modify some files) | + | * (modify some files, but don't add any new ones) |
* commit the changes< | * commit the changes< | ||
git commit -a | git commit -a | ||
- | (the -a switch will tell git to add and commit all changed files) | + | * the -a switch will tell git to add and commit all changed files; |
+ | if any were added, you would need to do git add for those | ||
+ | |||
+ | * when the -m switch is used, you specify the commit message here | ||
+ | on the command line; when it is ommitted, your default editor | ||
+ | (probably vim) will open | ||
</ | </ | ||
* create an experimental branch< | * create an experimental branch< | ||
Line 29: | Line 53: | ||
* switch to the experimental branch< | * switch to the experimental branch< | ||
git checkout experimental | git checkout experimental | ||
+ | |||
+ | * the shorthand way to create a branch and check it out at the same time is: | ||
+ | git checkout -b experimental | ||
+ | |||
+ | * you can also give a different reference to start the new branch at: | ||
+ | git checkout -b experimental HEAD~4 | ||
+ | or | ||
+ | git checkout -b experimental e8f2ab | ||
+ | or | ||
+ | git checkout -b experimental sometagname | ||
</ | </ | ||
* show branches again, with the * on experimental, | * show branches again, with the * on experimental, | ||
Line 53: | Line 87: | ||
* note that git will allow you to commit the files with conflicts in them! | * note that git will allow you to commit the files with conflicts in them! | ||
* once the conflicts are resolved, commit the merge with git commit -a | * once the conflicts are resolved, commit the merge with git commit -a | ||
+ | * if you know that one version of the file is fully correct and doesn' | ||
+ | git checkout --ours somefile | ||
+ | or | ||
+ | git checkout --theirs somefile | ||
+ | |||
+ | * --ours represents the file on our branch before the merge | ||
+ | * --theirs represents the file on the branch we are merging into ours | ||
+ | </ | ||
* (modify one file) | * (modify one file) | ||
* view diff of changes< | * view diff of changes< | ||
git diff | git diff | ||
+ | </ | ||
+ | * if you have already staged some changes, git diff will not show them. To see what the diff is with the staged changes, you need to do this:< | ||
+ | git diff --cached | ||
</ | </ | ||
* contrary to svn, where we would run svn revert < | * contrary to svn, where we would run svn revert < | ||
Line 63: | Line 108: | ||
</ | </ | ||
* to "go back in time" and review a project at the point of a previous commit, you can do so by creating a branch at that point and then checking it out< | * to "go back in time" and review a project at the point of a previous commit, you can do so by creating a branch at that point and then checking it out< | ||
- | git branch old 53067 | + | git checkout |
- | git checkout 53067 | + | |
(when finished, delete the branch) | (when finished, delete the branch) |