- see all commits made to App.js.
$ git log -- oneline src/App.js
- Use the SHA value to to revert to the desired version
$ git checkout 55a1dff -- src/App.js
- Local branch
git branch -m <old name> <new name>
I might not know the exact name of the branch, but I do know it contains some word
git branch --r | grep -i <pattern>
Maybe I don't have all the branches in sync with the remote repo, so I need to fetch them:
git fetch origin
Checkout remote branch
git checkout -b <branch_name> origin/<branch_name>
List all branches in your working directory
git branch
Switch to another branch
git checkout <branch_name>
Create a new local branch
git checkout -b <branch_name>
Push your branch to the remote
git push -u origin <branch_name>
(u = set_upstream)
See which files would be deleted
git clean -n
Delete the files
git clean -fd
git checkout -- <file>
git rm --cached <file>
git reset HEAD <file>
git init
- initiate a repository
git status
- get the status of repository / staging area / working directory
git add -u
- adds only changed files to the staging area -> untracked files will be ignored
git add .
- adds all files (tracked or not) to the staging area
git diff
- shows differences between the working directory and the repository
git diff --staged
- shows differences between the staging area and the repository
git commit -m "message here"
- commit your changes to the repository
git rm <file>
- it will remove the file and add the change to the staging area
git log
- shows the list of commits made
git log -n 3
- shows only the last 3 commits
git log --oneline
- every commit is on one line
git log --graph --oneline --all --decorate
- shows a nice graph of the commits
git checkout -- <file>
- undo changes you made to this file in the working directory.
This brings back the file from the repository
git reset HEAD <file>
- unstage file
git commit --amend -m "message here"
- amend the last commit; Note: you can amend only the last commit
git revert commit-sha-code
- it will make all the opposite of what that commit did and register these changes as a new commit
git reset commit-sha-code
- it sets the HEAD to the commit given in the command.
--soft
- for just changing the HEAD pointer, but keeping the staging index and the working directory unchanged--mixed
- changes the HEAD pointer and resets the staging area. Working directory stays unchanged--hard
- changes the HEAD pointer, resets staging area and working area. If I add a new commit now, the commits after the reset will be lost.
git clean -n
- shows which files would be deleted
git clean -fd
- removes untracked files
git checkout -- .
- unstage all modified files
git submodule update --init --recursive
- discard changes in submodules
git branch
- show the existing Branches
git branch -r
- show the branches on the remote repository
git checkout -b branchName
- create and checkout a branch
git diff branch1..branch2
- get differences between branch1 and branch2
git branch -d branchName
- deletes a branch
To merge branch1 into master
git checkout master
- switch to master (the branch that things are being merged into - the receiving branch)
git merge branch1
- merge branch1 into master
git merge --abort
- abort while in the merge
To set an existing local branch track a remote branch
git branch -u origin/<branch-to-track>
Create a local branch and set it to track a remote branch
git branch -t <branch-name> origin/<branch-name>
To move one commit from one branch to another - when the bad commit is the last one made
git checkout <branch-to-move-the-commit-to>
git cherry-pick <commit id>
- this will move the commit to the branch you are currently on
git checkout <original-branch>
git reset --hard HEAD^
- this will delete the last commit which is the commit you already moved
git remote add origin https://github.com/etc
- adds a remote found at that url and with the name origin to your local repository
git remote rm origin
- it removes the remote repository with the name origin
git push -u origin master
- push the changes in the master branch up to the origin remote repository
git remote set-url origin [email protected]:WebGIS/webscene-spec.git
- change a remote's url
git remote -v
- list all the remotes
- when working on master: before commiting your changes always pull so that he can merge using fast-forward; if you commit your changes before you pull, git will merge the 2 master branches (remote and local) using the recursive strategy
- when working on your own branch and you need to put your branch up to date with the master branch, you can do:
git rebase master
- while being on the branch you need to rebase, this will add all commits from master to your branch before the commits in your branch - to mention an issue from another repo in a commit: WebGis/arcgis-js-api#1234