Notes about Git
Jump to navigation
Jump to search
Manuals
- Crash Course: http://git.or.cz/course/svn.html
- User Manual for Git: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
- Branches
- in my own words: working with branches is central to git; some people make a branch for each feature they are working on; I think each developer should have his own branch (or even several if working on different OS or machines), and merge to master as often as possible; you can have local and remote branches; it would make sense to create a local branch, and then push it to the server creating a remote branch.
- http://sites.google.com/a/insoshi.com/insoshi-guides/Git-Guides/working-on-a-local-development-branch
- http://sites.google.com/a/insoshi.com/insoshi-guides/Git-Guides/pushing-up-your-changes
- http://blog.hasmanythrough.com/2008/12/18/agile-git-and-the-story-branch-pattern
- http://sites.google.com/a/insoshi.com/insoshi-guides/Git-Guides/merge-vs-rebase
# first make sure we are on the main branch git checkout master # create a local branch that is called mynewbranch git branch mynewbranch # switch to that branch git checkout mynewbranch # create the branch also on the remote repository git push ssh://..../openpetraorg/openpetraorg/ mynewbranch:refs/heads/mynewbranch # change config so that future git push will go into correct remote branch git config branch.mynewbranch.remote ssh://..../openpetraorg/openpetraorg git config branch.mynewbranch.merge refs/heads/mynewbranch # push changes in local branch to remote branch git push # make your changes in the branch, commit to branch git commit -a # push branch to remote branch git push # switch to master git checkout master # get latest from master git pull # merge from branch git merge mynewbranch # push to master git push # switch to branch again git checkout mynewbranch
todo: get the changes from HEAD into your local branch
- line feed issues:
- see also http://stackoverflow.com/questions/861995/is-it-possible-for-git-merge-to-ignore-line-ending-differences
- see also http://stackoverflow.com/questions/1011985/line-endings-messed-up-in-git-how-to-track-changes-from-another-branch-after-a
- http://git.or.cz/gitwiki/GitSvnComparsion suggests that on Windows in the config file in .git, you should set "core.autocrlf = true so that text files are automatically checked out with CRLF and checked in as LF".
- see also discussion at http://code.google.com/p/msysgit/issues/detail?id=21
TortoiseGit
This works fine on Windows, although it is still work in progress...
It requires "Git on Windows" http://code.google.com/p/msysgit/; be careful: use the official git installer from that site, eg. Git-1.6.3.2-preview20090608.exe, not the fullinstaller or other packages.
Git Bash
- You need to add each changed file before you commit. Otherwise that file will not be part of the next commit.
- If you added too many files by accident, and you want to lose them completely: (use this carefully with -f) git rm . -r
- even better: to unstage: git reset HEAD <file>...
- undo all local changes:
git checkout -f
- to revert a single file: use
git checkout filename
(see http://norbauer.com/notebooks/code/notes/git-revert-reset-a-single-file) - to ignore eg. *.bak files, create a file .gitignore and add the files; eg see OpenPetra/csharp/.gitignore