Notes about Git: Difference between revisions

From OpenPetra Wiki
Jump to navigation Jump to search
Line 3: Line 3:
* User Manual for Git: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
* User Manual for Git: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html


* Branches
== Issues ==
 
=== Branches for development of OpenPetra ===
** 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.
** 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/working-on-a-local-development-branch
Line 41: Line 43:
  todo: get the changes from HEAD into your local branch  
  todo: get the changes from HEAD into your local branch  


* line feed issues:
=== Branches for adjustments for other organisations ===
benefit: you can make modifications to the UINavigation and the base data structure etc. and even to the screen en.yml files
 
I have this setup for one organisation:
* created on my own server a git repository with an anonymous clone from the sourceforge openpetraorg git repository.
* cloned my own repository to my workstation
* create a branch on the repository, switch to the branch, modify a file, commit changes locally, push it not to master, but enter the name of your branch
* you can pull on your server from the sf repository, to follow the changes in the main repository, and merge from master into your branch
* you should create patches of your own development and post them in the OpenPetra forum so that all other users can benefit from your improvements
 
=== 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/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
** see also http://stackoverflow.com/questions/1011985/line-endings-messed-up-in-git-how-to-track-changes-from-another-branch-after-a

Revision as of 15:25, 27 October 2009

Manuals

Issues

Branches for development of OpenPetra

# 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 

Branches for adjustments for other organisations

benefit: you can make modifications to the UINavigation and the base data structure etc. and even to the screen en.yml files

I have this setup for one organisation:

  • created on my own server a git repository with an anonymous clone from the sourceforge openpetraorg git repository.
  • cloned my own repository to my workstation
  • create a branch on the repository, switch to the branch, modify a file, commit changes locally, push it not to master, but enter the name of your branch
  • you can pull on your server from the sf repository, to follow the changes in the main repository, and merge from master into your branch
  • you should create patches of your own development and post them in the OpenPetra forum so that all other users can benefit from your improvements

line feed issues

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