Git cheat sheet

From Simson Garfinkel
Jump to navigationJump to search

Origin info

Initial checkout:

  git clone <url> --recursive

change origin (useful if you cloned from a github http: but want to save it with a git@github.com...)

  git config remote.origin.url git@github.com...

Change origins for current and all submodules:

  git config -e

Make a signed tag and push to github

 git tag -u 'Simson L. Garfinkel <simsong@acm.org>' -s tcpflow-1.2.7 -m 'Release 1.2.7'
 git push --tags


Pull changes

From a forked repository's upstream. First we need to add 'upstream' as a name for a remote URL:

 git remote add upstream https://github.com/<<FOOBAR>>

Now we need to fetch the changes and merge them in:

 git fetch upstream        # fetches any new changes from original repository
 git merge upstream/master  # merges any changes fetched into your working files

This can be done as a single operation:

 git pull upstream/master

If there are local changes:

  • Resolve the conflicts
  • Note which conflicts you have resolved with git add conflictname.
  • commit your changes
  • push them to your origin/master:
 git push 


Differencing

  git diff HEAD  # should never produce output because HEAD is always the checked out commit
  git diff origin/master # Difference between you and the master
  git log origin/master  # Report what the differences are

Compare with a remote fork and take changes

(in this case, with

   git remote add uckelman https://github.com/uckelman/bulk_extractor.git
   cat .git/config 
   git fetch uckelman
   git diff uckelman/master
   git diff master uckelman/master 
   git merge uckelman/master

Submodules!

Submodules are complicated. Here is some recommended readings:

Documentation:

Short article:

Longer Tutorial:

References

[[Category::Cheat Sheets]]