Skip to content

Latest commit

 

History

History
189 lines (175 loc) · 6.29 KB

git_cheat_sheet.org

File metadata and controls

189 lines (175 loc) · 6.29 KB

Git cheat sheet

Configure

git config –global user.name “[name]”

Sets the name you want attached to your commit transactions

git config –global user.email “[email address]”

Sets the email you want attached to your commit transactions

git config –global color.ui auto

Enables helpful colorization of command line output

git config –global push.default current

Update a branch with the same name as current branch if no refspec is given

git config –global core.editor [editor]

Which editor to use when commit and tag that lets you edit messages

git config –global diff.tool [tool]

Specify which command to invoke as the specified tool for git difftool

Create repositories

git init [project-name]

Creates a new local repository with the specified name

git clone [url]

Downloads a project nd its entire version history

Make changes

git status

Lists all new or modified files to be committed

git status -s

Short view of status

git diff

Shows file differences not yet staged

git add [file]

Snapshots the file in preparation for versioning

git add .

Add all modified files to be commited

git add ‘*.txt’

Add only certain files

git add –patch filename.x (or -p for short)

Snapshot only chunks of a file

git rm [file]

Tell git not to track the file anymore

git diff –staged

Show what has been added to the index via git add but not yet committed

git diff HEAD

Shows what has changed since the last commit.

git diff HEAD^

Shows what has changed since the commit before the latest commit

git diff [branch]

Compare current branch to some other branch

git difftool -d

Same as diff, but opens changes via difftool that you have configured

git difftool -d master..

See only changes made in the current branch

git diff –no-commit-id –name-only –no-merges origin/master…

See only the file names that has changed in current branch

git diff –stat

See statistics on what files have changed and how

git reset [file]

Unstages the file, but preserves its contents

git commit

Record changes to git. Default editor will open for a commit message

git commit -m “[descriptive message]”

Records file snapshots permanently in version history

git commit –amend

Change the history, editing the HEAD commit

git commit –fixup=[sha]; git rebase -i –autosquash

Change the history, editing a specific commit other than HEAD

git rebase -i HEAD~5

Change the history, reword/edit/squash/fix a group of latest commits

Group changes

git branch

Lists all local branches in the current directory

git branch [branch-name]

Create a new branch

git checkout [branch-name]

Switches to the specified branch and updates the working directory

git checkout -b <name> <remote>/<branch>

Switches to a remote branch

git checkout [filename]

Return file to it’s previous version, if it hasn’t been staged yet

git merge [branch]

Combines the specified branch’s history into the current branch

git merge –no–ff [branch]

Merge branch without fast forwarding

git branch -a

See the full list of local and remote branches

git branch -d [branch]

Deletes the specified branch

git branch -D [branch]

Hard branch delete, will not complain

git branch -m <old_name> <new_name>

Rename a branch

Refactor filenames

git rm [file]

Deletes the file from the working directory and stages the deletion

git rm –cached [file]

Removes the file from version control but preserves the file locally

git mv [file-original] [file-renamed]

Changes the file name and prepares it for commit

Suppress tracking

.gitignore

*.log build/ temp-* A text file named .gitignore suppresses accidental versioning of files and paths matching the specified patterns

git ls-files –other –ignored –exclude-standard

Lists all ignored files in this project

Save fragments

git stash

Temporarily stores all modified tracked files

git stash pop

Restores the most recently stashed files

git stash list

Lists all stashed changesets

git stash drop

Discards the most recently stashed changeset

Review history

git log

Lists version history for the current branch

git log –follow [file]

Lists version history for a file, including renames

git log –pretty=format:”%h %s” –graph

Pretty commit view, you can customize it as much as you want

git log –author=’Name’ –after={1.week.ago} –pretty=oneline –abbrev-commit

See what the author has worked on in the last week

git log –no-merges master..

See only changes in this branch

git diff [file-branch]…[second-branch]

Shows content differences between two branches

git show [commit]

Outputs metadata and content changes of the specified commit

git rev-parse –short HEAD

Check sha1/unique name of HEAD commit

Redo commits

git reset

Unstage pending changes, the changes will still remain on file system

git reset [commit/tag]

Undoes all commits after [commit], preserving changes locally

git reset –hard [commit]

Discards all history and changes back to the specified commit

Synchronize changes

git fetch [bookmark]

Downloads all history from the repository bookmark

git fetch -p

Update history of remote branches, you can fetch and purge

git merge [bookmark]/[branch]

Combines bookmark’s branch into current local branch

git push

Push current branch to remote branch

git push [remote] [branch]

Manually specify remote and branch to use every time

git push -u origin master

If a remote branch is not set up as an upstream, you can make it so

git pull

Downloads bookmark history and incorporates changes

git pull [remote] [branch]

Specify to pull a specific branch

git remote

See list of remote repos available

git remote -v

Detailed view of remote repos available

git remote add [remote] [url]

Add a new remote

git bisect

$ git bisect start $ git bisect bad $ git bisect good v1.0 Bisecting: 6 revisions left to test after this [ecb6e1bc347ccecc5f9350d878ce677feb13d3b2]

$ make (or any other test) $ git bisect good Bisecting: 3 revisions left to test after this [b047b02ea83310a70fd603dc8cd7a6cd13d15c04]

$ make (or any other test) $ git bisect bad Bisecting: 1 revisions left to test after this [f71ce38690acf49c1f3c9bea38e09d82a5ce6014]

$ git bisect good b047b02ea83310a70fd603dc8cd7a6cd13d15c04 is first bad commit

$ git bisect reset