GIT

Персональная шпаргалка по опциям git.

Создание

### Создание репозитория и push на GitHub
echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/<>
git push -u origin master
# Создание ветки и переключение на нее - #1
$ git checkout -b iss53

# Создание ветки и переключение на нее - #2
$ git branch iss53
$ git checkout iss53
#
# Создание ветки без истории (последнее состояние)  - #1
#
# Check out to a temporary branch:
$ git checkout --orphan <TEMP_BRANCH>
# Add all the files:
$ git add -A

# Commit the changes:
$ git commit -am "Initial commit"

# Delete the old branch:
$ git branch -D <OLD_BRANCH>

# Rename the temporary branch to NEW_BRANCH:
$ git branch -m <NEW_BRANCH>

# Finally, force update to our repository:
$ git push -f origin <NEW_BRANCH>

#
# Создание ветки без истории (последнее состояние) - #2
#
# Clone the project, e.g. `myproject` is my project repository:
$ git clone https://github/heiswayi/myproject.git

# Since all of the commits history are in the `.git` folder, we have to remove it:
$ cd myproject

# And delete the `.git` folder:
$ git rm -rf .git

# Now, re-initialize the repository:
$ git init
$ git remote add origin https://github.com/heiswayi/myproject.git
$ git remote -v

# Add all the files and commit the changes:
$ git add --all
$ git commit -am "Initial commit"

# Force push update to the master branch of our project repository:
$ git push -f origin master

Клонирование

# Клонирование ветки
$ git clone <url> --branch <branch> --single-branch [<folder>]

Перемещение:

# Перемещение ветки:
$ git branch --move <old_name> <new_name>
$ git checkout <new_name>
$ git push origin [--set-upstream] <new_name>
$ git push origin --delete <old_name>

Удаление

# Удаление файла из индекса, при котором он остается в рабочем каталоге
$ git rm --cached [file]

# Удаление ветки
$ git push -D <branch>

# Удаление ветки из удаленного репозитория
$ git push origin :<branch>
To git@github.com
 - [deleted]         <branch>

# Удаление локального тега
$ git tag -d <tagName>

# Удаление тега из удаленного репозитория (напр. GitHub)
$ git push origin :refs/tags/<tagName>

# Альтрнативные варианты
git push --delete origin <tagName>
git tag -d <tagName>

Откат коммитов

# Откат изменений в репозитории на <N> коммитов назад
$ git reset --hard HEAD~<N>
# Принудительный коммит в основной репозиторий
$ git push -f origin master

Слияние веток (merge)

# Объединение ветки master с веткой dev
$ git checkout master
$ git merge dev

# Отмена слияния в случае возникновения конфликта.
# В случае успешного слияния не сработает
$ git merge --abort

Сравнение

# Сравнение веток - только файлы
$ git diff --name-status master..yourBranchName