-
-
Save Gerst20051/1bca8a9f4bc67a228306 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Set up your Git configuration | |
*/ | |
git config --global user.email "[email protected]" | |
git config --global user.name "Your Name" | |
git config --global core.editor "nano" | |
git config --global color.ui true | |
/* | |
*See Git configuration | |
*/ | |
git config --list | |
/* | |
* To initialise a local repository | |
*/ | |
git init | |
/* | |
* Add a file to the repo | |
*/ | |
git add <filename> | |
/* | |
* Add all the files to the repo | |
*/ | |
git add . | |
/* | |
* Commit the change to git | |
*/ | |
git commit -m "Message about the change goes here" <filename> | |
/* | |
* Commit all changes to git of muliple files - no filenames needed | |
*/ | |
git commit -am "Message about the change goes here" | |
/* | |
* See the commits in a historical linear fashion | |
*/ | |
git log | |
/* | |
* Git has a 3 Tier Architecture: Working - Staging - Repo | |
* | |
* Changes to files are put in a Checksum SHA-1 hash 40digit value containing parent hash, author and message. | |
* | |
* HEAD is the latest commit of the checked out branch | |
*/ | |
/* | |
* Basic Commands | |
*/ | |
git status /* the command 'git status' tells which files are not added or committed from Working to Staging to Repository */ | |
git commit -m "" /* Commits and changes to all files that are in Staging into Repo */ | |
git diff /* show changes between Working and Local Repo, no file supplied shows all files */ | |
git diff --staged /* shows changes between Staged and Local Repo */ | |
git rm file.txt /* will remove file from working then git commit -m "" to also remove from Repo */ | |
git rm --cached file.txt /* leaves copy of file in Working but removes from Staging and Repo */ | |
git mv /* rename or move files - then git commit -m "" to move to Repo */ | |
git commit -am "text goes here" /* adds all files straight to Repo from Staging if they have changes - meaning they skip git add */ | |
git checkout -- file.txt /* restore Repo file to Working Directory using current branch */ | |
git reset --soft HEAD^ /* restore repo file to staging */ | |
git reset HEAD file.txt /* Move a Stage file out of Stage back to Working */ | |
git commit --amend -m "message" file.txt /* Change last commit to Repo (only last one can change) */ | |
/* Reverting --soft --mixed --hard will go back to previous commits*/ | |
git log /* gets the sha1s so you can see the coomits where you want revert back to */ | |
git reset --soft sha /* changes Repo but not Staging or Working */ | |
git reset --mixed sha /* changes Repo and Staging but not Working */ | |
git reset --hard sha /* changes all 3 Tiers */ | |
git clean -f /* remove untracked files from Working */ | |
.gitignore /* ignores files to track in Working / track the .gitignore file */ | |
Global Ignore /* create in home folder */ | |
.gitignore_global | |
/* Add in */ | |
.DS_Store | |
.Trashes | |
.Spotlight_V100 | |
git config --global core.excludesfile ~/.gitignore_global /* add to gitconfig */ | |
/* Stop tracking changes */ | |
git rm --cached file.txt /* leaves copy in Repo and Working */ | |
/* Track Folders changes | |
Add an invisble file to a folder like .gitkeeper then add and commit */ | |
/* Commit Log */ | |
git ls-tree HEAD | |
git ls-tree master | |
git log --oneline | |
git log --author="Neil" | |
git log --grep="temp" | |
/* Show Commits */ | |
git show dc094cb /* show SHA1 */ | |
/* Compare Commits | |
Branches */ | |
git branch /* Show local branches * is the one we are on */ | |
git branch -r /* Shows remote branches */ | |
git branch -a /* Shows local and remote */ | |
git branch newbranch /* creates a new branch */ | |
git checkout newbranch /* switch to new branch */ | |
git checkout -b oldbranch /* creates and switches to new branch */ | |
git push origin newbranch /* Push new branch to remote */ | |
/* Diff in Branches */ | |
git diff master..otherbranch /* shows diff */ | |
git diff --color-words master..otherbranch /* shows diff in color */ | |
git branch --merged /* shows any merged branches */ | |
/* Rename Branch */ | |
git branch -m oldname newname | |
/* Delete Branch */ | |
git branch -d nameofbranch | |
/* Merge Branch */ | |
git merge branchname /* be on the receiver branch to merge the other branch */ | |
/* Merge Conflicts between the same file on 2 branches are marked in HEAD and other branch */ | |
git merge --abort /* Abort basically cancels the merge */ | |
/* Manually Fix Files and commit | |
The Stash */ | |
git stash save "text message here" | |
git stash list /* shows whats in stash */ | |
git stash show -p stash@ { | |
0 | |
} /* Show the diff in the stash */ | |
git stash pop stash@ { | |
0 | |
} /* restores the stash deletes the tash */ | |
git stash apply stash@ { | |
0 | |
} /* restores the stash and keeps the stash */ | |
git stash clear /* removes all stash */ | |
git stash drop stash@ { | |
0 | |
} | |
/* | |
* Remotes | |
* You can push and fetch to the remote server, merge any differences - then push any new to the remote - 3 branches work remote server branch, local origin master and local master | |
* | |
* Create a repo in GitHub, then add that remote to your local repo | |
* You will need to add a SSH key from your local machine and store it in GitHub - ref: https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/ | |
*/ | |
git remote add origin https://github.com/neilgee/genesischild.git /* origin can be named whatever followed by the remote */ | |
git remote /* to show all remotes */ | |
git remote show origin /*to see remote URL*/ | |
git remote remove origin /* to remove remote */ | |
git remote rm origin /* to remove remote */ | |
/* Push to Remote from Local */ | |
git push -u origin master /* push to remote(origin) and branch(master) | |
/* Cloning a GitHub Repo - create and get the URL of a new repository from GitHub, then clone that to your local repo, example below uses local repo named 'nameoffolder' */ | |
git clone https://github.com/neilgee/genesischild.git nameoffolder | |
/* Push to Remote from Local - more - since when we pushed the local to remote we used -u parameter then the remote branch is tracked to the local branch and we just need to use... */ | |
git push | |
git push origin newbranch /* Push a branch to a remote */ | |
/* Fetch changes from a cloned Repo */ | |
git fetch origin /* Pulls down latest committs from remote origin/master not origin, also pull down any branches pushed to Repo | |
Fetch before you work | |
Fetch before you pull | |
Fetch often */ | |
/* Merge with origin/master */ | |
git merge origin/master | |
git pull /* you can also do git pull which is = git fetch + git merge | |
Checkout/Copy a remote branch to local */ | |
git branch branchname origin/branchname /* this will bring the remote branch to local and track with the remote */ | |
/* Delete branch */ | |
git branch -d branchname | |
/* Checkout and switch branch and track to remote */ | |
git checkout -b nontracking origin/nontracking | |
/* Remove remote branch */ | |
git push origin --delete branch | |
/*Undoing*/ | |
git checkout path-to-file /*restores a file before it is staged */ | |
git reset HEAD path-to-file /*if it is staged - restores a file from last commit and then git checkout path-to-file */ | |
git checkout HEAD^ path-to-file /*if is staged and committed - restores from last commit */ | |
git reset --hard HEAD^ /*restore prior commit */ | |
/*Keeping the local synced with the origin after the local is reset | |
* ref http://stackoverflow.com/questions/17667023/git-how-to-reset-origin-master-to-a-commit | |
*/ | |
git push --force origin master | |
/* | |
* Tags | |
* Adding a Tag | |
*/ | |
git tag -a v1.0.0 -m "add message here" /*tagging a commit with a version number*/ | |
git push --tags /* pushes tag info to master remote */ | |
/*You can checkout a commit and add a tag to that commit by checking out its SHA */ | |
git checkout f1f4a3d /*checking out a commit - see the commit SHAS by git log */ | |
/* | |
* Changing Tag to different commit | |
*/ | |
/* | |
* Deleting the tag | |
*/ | |
git tag -d v1.0.0 /*change version number to suit - we are deleting it here*/ | |
git push origin :refs/tags/v1.0.0 /*push change to remote - change 'origin' to your remote name*/ | |
/* | |
* Adding it again - but this time it would be to the latest commit | |
*/ | |
git tag v1.0.0 /*create new tag - change version number to suit */ | |
git push origin master --tags /* assign to latest commit - change 'origin' to your remote name*/ | |
/* | |
* Syncing a Fork | |
* Have the Fork already created in Github | |
* http://stackoverflow.com/questions/7244321/how-do-i-update-a-github-forked-repository | |
*/ | |
git clone [email protected]:me/myfork.git myfork /* make a local copy of the fork */ | |
/* cd into the repo*/ | |
git remote add upstream https://github.com/theotherguy/theoriginal.git /* make an upstream remote repo */ | |
git remote -v /* check all the repos */ | |
git fetch upstream /* get the original repo */ | |
git checkout master /* ensure you in your local master branch */ | |
git rebase upstream/master /* rewrite your local master branch on top of the upstream */ | |
git push -f origin master /* needs -f the first time after rebase */ | |
/* This will result in the fork master branch being 'even' with the original master branch */ | |
/* | |
* Checking out a Fork with a certain pull request on a new branch | |
*/ | |
git checkout -b newbranchname | |
git pull https://github.com/username/the-repo.git theirbranchname |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment