Really short and quick git guide

(adapted from my old UEF page, not meant to be exhaustive.)

Git on cs.uef.fi



Some quick commands for setting up a clone of the git system on cs.



Use the following commands to clone the repository in your local machine or your cs1 directory.



# clone the repo from server

$ git clone ssh://username@cs.uef.fi/home/tko/gitrepos/pums.git


git clone ssh://padman@students.iitmandi.ac.in/home/padman/pappu/students/anshul/work/interspeech2016/paper/segment_is2016



where username is your cs login. This is a one time command.



# cd to pums



# get the latest version

$ git pull



# See the changes so far

$ git log



# edit your files



# See the changes you made

$ git status



$ git diff



# add updates and commit locally

# add any new files

$ git add <file(s)>



# add and commit

$ git commit -a -m 'comment updated your changes'



Note:

It will be always useful to add *detailed* comments about your changes.

I recommend you *not* to give an inline comment (as shown above). Instead,

if you type:

$ git commit -a

and press ENTER, git opens your default editor, with more detailed information

on the updated files

. Remove the '#' and give proper commit messages. Git commits when you
save the message file. This is a local commit. See 
$ git log
to see some of the commit messages I have given so far.

More commands:
# Revert back to last commited version. Replace HEAD with any version name.
$ git checkout HEAD -- filename


# push changes to server
$ git push
# Make sure your commits dont break the system before pushing to the server.


# Conflict merging
# This has to be done when the same file is updated by two people and both try to push changes
# to the server.
# git tries to automatically merge as much as possible, but the final merging must
# be done or confirmed manually.

$ git mergetool

Conflicts are marked in a file with clear line breaks:

<<<<<<< HEAD:mergetest
This is my third line
=======
This is a fourth line I am adding
>>>>>>> 4e2b407f501b68f8588aa645acafffa0224b9b78:mergetest

<<<<<<<: Indicates the start of the lines that had a merge conflict. The first set of lines are the lines from the file that you were trying to merge the changes into.

=======: Indicates the break point used for comparison. Breaks up changes that user has committed (above) to changes coming from merge (below) to visually see the differences.

>>>>>>>: Indicates the end of the lines that had a merge conflict.

How do I resolve a merge conflict in a file?

You resolve a conflict by editing the file to manually merge the parts of the file that git had trouble merging. This may mean discarding either your changes or someone else's or doing a mix of the two. You will also need to delete the '<<<<<<<', '=======', and '>>>>>>>' in the file. 

More links:

http://vim.wikia.com/wiki/A_better_Vimdiff_Git_mergetool
http://genomewiki.ucsc.edu/index.php/Resolving_merge_conflicts_in_Git
http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf