#Topics to cover# Single developer workflow for easy getting started.
##GIT (really simple explained)##
- git is a local version control software which can also push/pull changes to a remote repository
- commit is equivalent to a checkpoint
- branch is a separate line of code.
##Git basic workflow##
- single branch
- branch per feature
- branch per release
##Basic Commands##
git init- Only first time configuration
git config --global user.name "John Doe"git config --global user.email johndoe@example.comgit statusgit add .git commit -m "My custom message"git log
##Reset,Undo, etc commits && changes
git checkout .(undo all non commited changes, you may also do it for specific files)git reset --soft HEAD~1(undo last commit while keeping files)git reset --hard(Resets to a last commit deleting all files and changes. Its considered dangerous because it cannot be undone).git reset --hard HEAD~1(Resets to an specific commit leaving a clean directory. In this case to the last commit. Number 1 can be changed for the desire commit rollback number)
##Amend Commits You may need to fix a commit in the case where you forgot to include a file or a change you may do this with the ammend argument:
git add .git commit --amend(this will promp you for a commit message)git commit --amend -m "Just added a little change"
##Tags They annotate (tag) specific points in history such a releases or any other important checkpoint. Its useful when specifying releases. Also github creates a link directly to releases as zip so other users can download the repo as a zip file.
git tag v1.0.0(simple tag)git tag -a v1.0.0 -m "release v1.0.0"(message must be descritive as it will show up in github pages"git tag(shows existing tags)git tag v1.0.0(will show the commit of the current tag)git tag -D v1.0.0(will remove the tag)git push origin :refs/tags/v1.0.0(will remove the tag remotely)
Tags are not pushed by default you have to do it manually
git push origin --tags(pushes all tags)git push origin v1.0.0(pushes only the specified tag)
##branching##
git branchgit branch myBranchNamegit checkout myBranchNamegit merge nameOfBranch
###Remove remote branches###
git push origin --delete <branchName>
##Remote repositories##
-
git remote add origin url -
git push -u origin branchName -
git remote -v(shows current remote repositories) -
git remote set-url origin https://github.com/username/repo-name.git(the url is the new repo) ###Merge remote changes### There are different ways of doing this. The following git command wil merge remote changes but its most likely that you want to review changes first before merging, other commands are avaliable for this. -
``` git pull `` Will download all changes overwriting non conflicting files
-
git pull --rebase masterWill download an specific branch (master in this case) and will prompt when conflicts appear. -
git rebase --continueone you have deal with the conflicts you can mark the file as fixed with ``` git add filename.ext `` and after that you execute rebase --continue to move on. -
git rebase --skipas the arguments says it skips the merge. -
git rebase --abortwill leave the original branch as it is.
##update .gitignore
git rm -r --cached .git add .git commit -m "gitignore updated"