TubeTK/Development/GITCheatSheet: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
Line 77: Line 77:
* GIT guide from gitorious []
* GIT guide from gitorious []
* GIT guide in CMake []
* GIT guide in CMake []

= Setting up tracked repositories to start pushing =
= Setting up tracked repositories to start pushing =

Revision as of 18:04, 4 March 2010

Workflow recommendation

  1. Keep a local master branch which only is a pointer to the gitorious master (does not contain local changes)
  2. Make development modification in a local branch
  3. When getting ready to push these changes to the origin try the following
    1. Do a git pull on master to fetch and merge all changes from gitorious
      1. git checkout master
      2. git pull origin master
    2. Do a git rebase of the topic branch onto master - That is with topic checkout do "git rebase master"
      1. git rebase master topic
    3. Fix any conflicts that result
      1. Edit files
      2. git add -u
      3. git rebase --continue
    4. Merge the topic branch - This will result in an fast-forward merge.
      1. git merge topic
    5. git push your local master branch
      1. git push origin master
  4. If for some reason you have ever pushed your development branch to someone else don't rebase it as this is effectively rewriting history
  5. If you want to keep a record that your local development was made in parallel to some other development, do a git merge instead of git rebase in step 2 of above

Create a checkout

Stash local changes temporarily

  • git stash

Create a local branch

  • git branch test

Swtich to a local branch

  • git checkout test

Get stashed local changes

  • git stash pop

Update a branch to the remote master's head

  • git stash
  • git rebase origin master
  • git stash pop

Add to local commit

  • git add <filename>
  • git add -A

Push local commit

  • git push origin master

Remove a local branch

  • git checkout master
  • git branch -d <branch>

Track a remote branch

  • "git fetch" (get up to date) or "git pull"
  • git branch --track somebranch origin/somebranch
    • --track is not needed unless you've set branch.autosetupmerge to false in your config
  • git checkout somebranch
  • git commit
  • git push
    • sends changes to origin/somebranch

Delete a remote branch

  • Don't do this unless you're incredibly confident in what you're doing
  • git push origin :somebranch

Project History

  • git log ( To view the history of your changes )
  • git log -p ( To see complete diffs at each step )
  • git log --stat --summary ( To see overview )

Three ways to commit to remote/master

  1. Without branching ( Good for quick changes )
  2. Branching and merging
  3. Branching and rebasing

Additional References

  • GIT tutorial [1]
  • GIT guide from gitorious [2]
  • GIT guide in CMake [3]

Setting up tracked repositories to start pushing

  1. If you have cloned read-only version, do the following first
    1. git remote rm origin
  2. Add the proper remote
    1. git remote add origin
  3. You can push your changes
    1. git push origin master