An open API service indexing awesome lists of open source software.

https://github.com/marek128b/git-cheat-sheet


https://github.com/marek128b/git-cheat-sheet

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

        

# Git Cheat Sheet

**table of content**
- [Git Cheat Sheet](#git-cheat-sheet)
- [Git configuration](#git-configuration)
- [Starting A Project](#starting-a-project)
- [Day-To-Day Work](#day-to-day-work)
- [Synchronizing repositories](#synchronizing-repositories)
- [Git branching model](#git-branching-model)
- [Tagging known commits](#tagging-known-commits)
- [Reverting changes](#reverting-changes)
- [My Strategy](#my-strategy)

## Git configuration
`$ git config --global user.name “Your Name”`

Set the name that will be attached to your commits and tags.

`$ git config --global user.email “[email protected]”`

Set the e-mail address that will be attached to your commits and tags.

## Starting A Project
`$ git init [project name]`

Create a new local repository. If **project name** is provided, Git will
create a new directory name **project name** and will initialize a
repository inside it. If **project name** is not provided, then a new
repository is initialized in the current directory.

`$ git clone [project url]`

Downloads a project with the entire history from the remote repository.

## Day-To-Day Work
`$ git status`

Displays the status of your working directory. Options include new,
staged, and modified files. It will retrieve branch name, current commit
identifier, and changes pending commit.

`$ git add [file]`

Add a **file** to the staging area. Use in place of the full file path to add all
changed files from the current directory down into the directory tree.

`$ git commit -m "[message]"`

Create a new commit from changes added to the staging area.
The commit must have a **message**!

## Synchronizing repositories
`$ git fetch [remote]`

Fetch changes from the **remote**, but not update tracking branches.

`$ git pull [remote]`

Fetch changes from the **remote** and merge current branch with its
upstream.

`$ git push [--tags] [remote]`

ush local changes to the **remote**. Use **--tags** to push tags.

`$ git push -u [remote] [branch]`

Push local **branch** to **remote** repository. Set its copy as an upstream.

## Git branching model
`$ git branch [-a]`

List all local branches in repository. With **-a**: show all branches
(with remote).

`$ git branch [branch_name]`

Create new branch, referencing the current HEAD.

`$ git checkout [-b][branch_name]`

Switch working directory to the specified branch. With **-b**: Git will
create the specified branch if it does not exist.

`$ git merge [from name]`

oin specified `[from name]` branch into your current branch (the one
you are on currently).

`$ git branch -d [name]`

Remove selected branch, if it is already merged into any other.
-D instead of -d forces deletion.

## Tagging known commits
`$ git tag`

List all tags.

`$ git tag [name] [commit sha]`

Create a tag reference named **name** for current commit. `[Add commit
sha]` to tag a specific commit instead of current one.

`$ git tag -a [name] [commit sha`

Create a tag object named **name** for current commit.

## Reverting changes
`$ git reset [--hard] [target reference]`

Switches the current branch to the **target reference**, leaving
a difference as an uncommitted change. When **--hard** is used,
all changes are discarded.
`$ git revert [commit sha]`

Create a new commit, reverting changes from the specified commit.
It generates an inversion of changes.

## My Strategy
![image](02%20Feature%20branches.svg)