CARVIEW |
Guides: Git Cheat Sheet
Git principles
Zach Rusin’s Git Cheat Sheet
The SVG is at:
Sample png’s are here:
- https://ktown.kde.org/~zrusin/git/git-cheat-sheet-medium.png
- https://ktown.kde.org/~zrusin/git/git-cheat-sheet-large.png
cheat.errtheblog.com
- https://cheat.errtheblog.com/s/git/
- https://cheat.errtheblog.com/s/git_usage/
- https://cheat.errtheblog.com/s/gitsvn/
A Practical Git GUIDE
(credit: notes extracted from GIT screencast at https://www.peepcode.com.)
CONFIGURE
identify yourself to git: email and your name
git config —global user.name “David Beckwith” git config —global user.email “dbitsolutions@gmail.com”To view all options:
git config —listOR
cat .gitconfigSET UP ALIASES
git config —global alias.co checkoutVIEW YOUR CONFIGURATION
cat .gitconfigTO IGNORE WHITESPACE (Ruby is whitespace insensitive)
git config —global apply.whitespace nowarnSome nice aliases:
gb = git branch gba = git branch -a gc = git commit -v gd = git diff | mate gl = git pull gp = git push gst = git statusSTART USING GIT
git initTO IGNORE SOME FILES
Add a file in the root directory called .gitignore and add some files to it: (comments begin with hash)
*.log db/schema.rb db/schema.sqlGit automatically ignores empty directories. If you want to have a log/
directory, but want to ignore all the files in it, add the following lines to the root .gitignore
: (lines beginning with ‘!’ are exceptions)
Then add an empty .gitignore
in the empty directory:
TO SCHEDULE THE ADDITION OF ALL FILES TO THE NEXT COMMIT
git add .TO SEE THE STATUS
git statusTO COMMIT
git commit -m “First import”TO SEE WHAT HAS BEEN COMMITTED
git ls-filesTO SCHEDULE DELETION OF A FILE
git rm [file name]TO COMMIT ALL CHANGES IN FILES IN THE CURRENT REPOSITORY
git commit -aTO SCHEDULE THE ADDITION OF AN INDIVIDUAL FILE TO THE NEXT COMMIT
git add [file name]TO VIEW THE DIFFERENCE AS YOU COMMIT USE THE -v OPTION
git commit -vTO COMMIT AND TYPE THE MESSAGE ON THE COMMAND LINE USE THE -m OPTION
git commit -m “This is the message describing the commit”TO COMMIT AND GET AUTOMATICALLY ANY CHANGES FROM OTHER PEOPLE USE THE -a OPTION
git commit -aTHE NORMAL COMMIT COMMAND:
git commit -a -vTO VIEW A LOG OF YOUR COMMITS
git logTO VIEW A LOG OF YOUR COMMITS WITH A GRAPH TO SHOW THE EXTENT OF THE CHANGES
git log —statTO HAVE PAGINATION WHEN VIEWING THE LOG FILE USE THE -v OPTION
git log -vTO VISUALIZE YOUR CHANGES
gitk —allTO CREATE A NEW TAG AND PUSH IT ON THE REMOTE BRANCH
git tag “v1.3” git push —tagsTO CREATE A NEW BRANCH
git branch [name of your new branch]TO PUSH THE NEW BRANCH TO A REMOTE REPOSITORY
git push origin [new-remote]TO PULL A NEW BRANCH FROM A REMOTE REPOSITORY
git fetch origin [remote-branch]:[new-local-branch]TO VIEW ALL OF THE EXISTING BRANCHES
git branchTO VIEW A LIST OF ALL BRANCHES
git branch -aTO SWITCH TO ANOTHER BRANCH
The state of your file system will change after executing this command.
git checkout [name of the branch you want to switch to]OR
git co [name of the branch you want to switch to]TO MAKE SURE THAT YOUR NEW BRANCH GETS CHANGES FROM THE MASTER BRANCH (WHERE EVERYBODY ELSE IS WORKING) USE THE REBASE COMMAND
git rebase masterTO MERGE YOUR NEW BRANCH INTO THE MASTER BRANCH
First, switch back to the master branch:
git co masterCheck to see what changes you’re about to merge together, compare the two branches:
git diff master xyzIf you’re in a branch that’s not the xyz
branch and want to merge the xyz
branch into it:
TO REVERT YOUR CHANGES to before the merge.
git reset —hard ORIG_HEADTO RESOLVE CONFLICTS just edit your file.
Remove the markings, add the file, then commit.
TO CREATE A BRANCH AND SWITCH TO THE BRANCH IN ONE MOVE:
git checkout -b [name of new branch]TO CREATE A “CLIPBOARD” or “STASH” OF CHANGES THAT ARE NOT YET COMMITED (SO THAT YOU CAN SWITCH TO ANOTHER BRANCH IN THE MIDDLE OF YOUR CHANGES.), CREATE A STASH.
git stash “Put a message here to remind you of what you’re saving to the clipboard”TO SWITCH AWAY FROM THE CURRENT BRANCH
git co [branch you want to switch to]Do whatever
Then switch back to the stashed branch
TO VIEW THE LIST OF STASHES
git stash listTO LOAD BACK THE “CLIPBOARD” OR “STASH”
git stash applyNow you can continue to work where you were previously.
TO DELETE A BRANCH THAT IS NOT USED ANYMORE, but already merged into the current branch. (TO CLEAN UP)
git branch -d [name of branch you want to delete]TO DELETE AN UNMERGED BRANCH
git branch -D [name of branch you want to delete]TO DELETE THE STASH. (ERASE THE “CLIPBOARD” FROM MEMORY)
git stash clearTO SET UP YOUR REPOSITORY FOR SHARING ON A CENTRAL SERVER
Copy up your repository. e.g.:
scp -r my_project deploy@yourbox.com:my_projectMove your files on the remote server to /var/git/my_project
For security make the owner of this project git
On the repository server:
Then (for security) restrict the “deploy” user to doing git-related things in /etc/passwd
with a git-shell
.
TO CHECK OUT THE GIT REPOSITORY TO YOUR LOCALHOST. ON YOUR LOCAL HOST DO THIS:
git clone git@yourbox.com:/var/git/my_projectTO SEE SOME INFO ABOUT THE REPOSITORY THAT WILL TELL YOU WHICH REPOSITORY IS THE MASTER AND WHICH IS THE SLAVE:
cat .git/configBy virtue of having cloned the remote repository, your local repository becomes the slave and will track and synchronize with the remote master branch.
TO UPDATE YOUR LOCAL BRANCH FROM THE REMOTE SERVER:
git pullTO GET A COPY OF THE ENTIRE REMOTE REPOSITORY (e.g. a repository named “laptop”) WITHOUT MERGING THEM INTO YOUR LOCAL BRANCHES USE FETCH
git fetch laptopTO MERGE TWO LOCAL BRANCHES (ie. your local xyz branch with your local master branch) USE MERGE
git merge laptop/xyzThis merged the (already copied laptop repository’s xyz branch) with the current branch you’re sitting in.
TO MERGE THE REMOTE BRANCH WITH YOUR LOCAL BRANCH THAT YOU ARE SITTING IN USE PULL
TO ADD LOCAL KNOWLEDGE (TO YOUR LOCAL REPOSITORY) OF A 2ND REMOTE REPOSITORY, LIKE YOUR LAPTOP
git remote add laptop duo2book.local:repos/m_projectwhere ’’’laptop’’" is the name of the remote repository and “‘’duo2book.local’’” is the name of the remote machine.
TO VIEW META INFORMATION ABOUT THAT REMOTE REPOSITORY
git remote show laptopTO PUSH A COMMITTED LOCAL CHANGE OF THE xyz BRANCH TO THE REMOTE laptop BRANCH
git push laptop xyzTO CREATE A TRACKING BRANCH (A SLAVE BRANCH). Ie. to link a local branch to a remote branch:
git branch —track local_branch remote_branchNOW IF YOU’RE SITTING IN THE LOCAL TRACKING BRANCH, TO PULL YOU DON’T NEED TO SPECIFY THE REMOTE TRACKING BRANCH:
git pullNote: You can track(link) different local branches to different remote machines. For example, you can track your friend’s “upgrade” branch with your “bobs_upgrade” branch, and simultaneously you can track the origin’s “master” branch (of your main webserver) with your local “master” branch.
By convention, ‘origin’ is the local name given to the remote centralized server which is the way SVN is usually set up on a remote server.
TO SEE WHICH LOCAL BRANCHES ARE TRACKING A REMOTE BRANCH:
git remote show originTO WORK WITH AN SVN REPOSITORY BUT WORK WITH GIT LOCALLY:
git-svn clone [http location of an svn repository]Now you can work with the checked out directory as though it was a git repository. (cuz it is)
TO PUSH (COMMIT) CHANGES TO THE REMOTE SERVER
git-svn dcommitTO UPDATE YOUR LOCAL REPOSITORY FROM THE SVN REPOSITORY
git-svn rebaseNOTE: make sure you have your perl bindings to your local svn installation.