mirror of
https://github.com/k88hudson/git-flight-rules.git
synced 2025-03-10 12:48:43 -03:00
Translate README_ru.md via GitLocalize (#210)
This commit is contained in:
parent
df439158b4
commit
8cfa8e476a
202
README_ru.md
202
README_ru.md
@ -11,17 +11,21 @@
|
|||||||
|
|
||||||
> В НАСА фиксируют все наши промахи, аварии и методы решения проблем с начала 1960 х гг., когда наземные группы проекта Mercury начали составлять сборник "выученных уроков". Теперь в этом сборнике перечислены тысячи сложных ситуаций и их решения – от отказа двигателей, поломки ручек люка до проблем с компьютером.
|
> В НАСА фиксируют все наши промахи, аварии и методы решения проблем с начала 1960 х гг., когда наземные группы проекта Mercury начали составлять сборник "выученных уроков". Теперь в этом сборнике перечислены тысячи сложных ситуаций и их решения – от отказа двигателей, поломки ручек люка до проблем с компьютером.
|
||||||
|
|
||||||
— Крис Хэдфилд, *Руководство астронавта по жизни на Земле* (перевод Дмитрия Лазарева).
|
— Крис Хэдфилд, *Руководство астронавта по жизни на Земле* (перевод Дмитрия Лазарева).
|
||||||
|
|
||||||
#### Соглашения для этого документа
|
#### Соглашения для этого документа
|
||||||
|
|
||||||
Для наглядности во всех примерах в этом документе используется измененное приглашение командной строки, чтобы показать текущую ветку и есть ли подготовленные изменения. Ветка заключена в кавычки, а символ `*` после ветки означает подготовленные изменения.
|
Для наглядности во всех примерах в этом документе используется измененное приглашение командной строки, чтобы показать текущую ветку и есть ли подготовленные изменения. Ветка заключена в кавычки, а символ `*` после ветки означает подготовленные изменения.
|
||||||
|
|
||||||
[](https://gitter.im/k88hudson/git-flight-rules?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
[](https://gitter.im/k88hudson/git-flight-rules?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
|
|
||||||
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
||||||
**Содержание** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
||||||
|
|
||||||
|
- [Репозитории](#%D0%A0%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B8)
|
||||||
|
- [Я хочу создать локальный репозиторий](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C-%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9)
|
||||||
|
- [Я хочу клонировать удаленный репозиторий](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9)
|
||||||
- [Редактирование коммитов](#%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D1%82%D0%BE%D0%B2)
|
- [Редактирование коммитов](#%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D1%82%D0%BE%D0%B2)
|
||||||
- [Что я только что сохранил?](#%D0%A7%D1%82%D0%BE-%D1%8F-%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D1%87%D1%82%D0%BE-%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BB)
|
- [Что я только что сохранил?](#%D0%A7%D1%82%D0%BE-%D1%8F-%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D1%87%D1%82%D0%BE-%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BB)
|
||||||
- [Я неправильно написал сообщение коммита](#%D0%AF-%D0%BD%D0%B5%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE-%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BB-%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D1%82%D0%B0)
|
- [Я неправильно написал сообщение коммита](#%D0%AF-%D0%BD%D0%B5%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE-%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BB-%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D1%82%D0%B0)
|
||||||
@ -98,11 +102,14 @@
|
|||||||
- [Я хочу переписать локальные файлы при выполнении git pull](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D0%BF%D0%B5%D1%80%D0%B5%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C-%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D1%84%D0%B0%D0%B9%D0%BB%D1%8B-%D0%BF%D1%80%D0%B8-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B8-git-pull)
|
- [Я хочу переписать локальные файлы при выполнении git pull](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D0%BF%D0%B5%D1%80%D0%B5%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C-%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D1%84%D0%B0%D0%B9%D0%BB%D1%8B-%D0%BF%D1%80%D0%B8-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B8-git-pull)
|
||||||
- [Я хочу удалить файл из git, но оставить сам файл](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C-%D1%84%D0%B0%D0%B9%D0%BB-%D0%B8%D0%B7-git-%D0%BD%D0%BE-%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D1%81%D0%B0%D0%BC-%D1%84%D0%B0%D0%B9%D0%BB)
|
- [Я хочу удалить файл из git, но оставить сам файл](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C-%D1%84%D0%B0%D0%B9%D0%BB-%D0%B8%D0%B7-git-%D0%BD%D0%BE-%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D1%81%D0%B0%D0%BC-%D1%84%D0%B0%D0%B9%D0%BB)
|
||||||
- [Я хочу откатить файл до заданной ревизии](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D0%BE%D1%82%D0%BA%D0%B0%D1%82%D0%B8%D1%82%D1%8C-%D1%84%D0%B0%D0%B9%D0%BB-%D0%B4%D0%BE-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9-%D1%80%D0%B5%D0%B2%D0%B8%D0%B7%D0%B8%D0%B8)
|
- [Я хочу откатить файл до заданной ревизии](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D0%BE%D1%82%D0%BA%D0%B0%D1%82%D0%B8%D1%82%D1%8C-%D1%84%D0%B0%D0%B9%D0%BB-%D0%B4%D0%BE-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9-%D1%80%D0%B5%D0%B2%D0%B8%D0%B7%D0%B8%D0%B8)
|
||||||
|
- [Я хочу получить список изменений в заданном файле из разных коммитов или веток](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9-%D0%B2-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D0%BE%D0%BC-%D1%84%D0%B0%D0%B9%D0%BB%D0%B5-%D0%B8%D0%B7-%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D1%85-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B8%D1%82%D0%BE%D0%B2-%D0%B8%D0%BB%D0%B8-%D0%B2%D0%B5%D1%82%D0%BE%D0%BA)
|
||||||
- [Конфигурация](#%D0%9A%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D1%8F)
|
- [Конфигурация](#%D0%9A%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D1%8F)
|
||||||
- [Я хочу добавить псевдонимы для некоторых команд Git](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%BF%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%BD%D0%B8%D0%BC%D1%8B-%D0%B4%D0%BB%D1%8F-%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4-git)
|
- [Я хочу добавить псевдонимы для некоторых команд Git](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%BF%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%BD%D0%B8%D0%BC%D1%8B-%D0%B4%D0%BB%D1%8F-%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4-git)
|
||||||
- [Я хочу добавить в свой репозиторий пустую папку](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%B2-%D1%81%D0%B2%D0%BE%D0%B9-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9-%D0%BF%D1%83%D1%81%D1%82%D1%83%D1%8E-%D0%BF%D0%B0%D0%BF%D0%BA%D1%83)
|
- [Я хочу добавить в свой репозиторий пустую папку](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%B2-%D1%81%D0%B2%D0%BE%D0%B9-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9-%D0%BF%D1%83%D1%81%D1%82%D1%83%D1%8E-%D0%BF%D0%B0%D0%BF%D0%BA%D1%83)
|
||||||
- [Я хочу сохранить имя пользователя и пароль для репозитория](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D1%82%D1%8C-%D0%B8%D0%BC%D1%8F-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-%D0%B8-%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8C-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F)
|
- [Я хочу сохранить имя пользователя и пароль для репозитория](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D1%82%D1%8C-%D0%B8%D0%BC%D1%8F-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-%D0%B8-%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8C-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F)
|
||||||
- [Я хочу, чтобы Git игнорировал изменения разрешений и прав файлов](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D1%87%D1%82%D0%BE%D0%B1%D1%8B-git-%D0%B8%D0%B3%D0%BD%D0%BE%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BB-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B9-%D0%B8-%D0%BF%D1%80%D0%B0%D0%B2-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2)
|
- [Я хочу, чтобы Git игнорировал изменения разрешений и прав файлов](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D1%87%D1%82%D0%BE%D0%B1%D1%8B-git-%D0%B8%D0%B3%D0%BD%D0%BE%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BB-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B9-%D0%B8-%D0%BF%D1%80%D0%B0%D0%B2-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2)
|
||||||
|
- [Я хочу задать данные пользователя в глобальных настройках](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D0%B7%D0%B0%D0%B4%D0%B0%D1%82%D1%8C-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-%D0%B2-%D0%B3%D0%BB%D0%BE%D0%B1%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%D1%85)
|
||||||
|
- [Я хочу настроить цветовую схему для командной строки Git](#%D0%AF-%D1%85%D0%BE%D1%87%D1%83-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C-%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D1%83%D1%8E-%D1%81%D1%85%D0%B5%D0%BC%D1%83-%D0%B4%D0%BB%D1%8F-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8-git)
|
||||||
- [Я не представляю что я сделал неправильно](#%D0%AF-%D0%BD%D0%B5-%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E-%D1%87%D1%82%D0%BE-%D1%8F-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D0%BB-%D0%BD%D0%B5%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE)
|
- [Я не представляю что я сделал неправильно](#%D0%AF-%D0%BD%D0%B5-%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E-%D1%87%D1%82%D0%BE-%D1%8F-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D0%BB-%D0%BD%D0%B5%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE)
|
||||||
- [Другие ресурсы](#%D0%94%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B)
|
- [Другие ресурсы](#%D0%94%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B)
|
||||||
- [Книги](#%D0%9A%D0%BD%D0%B8%D0%B3%D0%B8)
|
- [Книги](#%D0%9A%D0%BD%D0%B8%D0%B3%D0%B8)
|
||||||
@ -112,9 +119,36 @@
|
|||||||
|
|
||||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
|
|
||||||
|
## Репозитории
|
||||||
|
|
||||||
|
### Я хочу создать локальный репозиторий
|
||||||
|
|
||||||
|
Чтобы создать репозиторий Git в текущей папке:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
(my-folder) $ git init
|
||||||
|
```
|
||||||
|
|
||||||
|
### Я хочу клонировать удаленный репозиторий
|
||||||
|
|
||||||
|
Чтобы клонировать (копировать) удаленный репозиторий, скопируйте адрес репозиторий и запустите:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ git clone [url]
|
||||||
|
```
|
||||||
|
|
||||||
|
Git сохранит копию в папке с названием репозитория. Убедитесь, что у Вас есть соединение с удаленным сервером, откуда Вы клонируете (в большинстве случаев это означает наличие выхода в Интернет).
|
||||||
|
|
||||||
|
Чтобы клонировать в папку с произвольным именем:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ git clone [url] name-of-new-folder
|
||||||
|
```
|
||||||
|
|
||||||
## Редактирование коммитов
|
## Редактирование коммитов
|
||||||
|
|
||||||
<a name="diff-last"></a>
|
<a name="diff-last"></a>
|
||||||
|
|
||||||
### Что я только что сохранил?
|
### Что я только что сохранил?
|
||||||
|
|
||||||
Допустим, Вы не глядя сохранили изменения с помощью `git commit -a` и теперь не уверены что именно сохранили. В таком случае Вы можете просмотреть последний коммит в HEAD с помощью:
|
Допустим, Вы не глядя сохранили изменения с помощью `git commit -a` и теперь не уверены что именно сохранили. В таком случае Вы можете просмотреть последний коммит в HEAD с помощью:
|
||||||
@ -152,6 +186,7 @@ $ git commit --amend -m 'xxxxxxx'
|
|||||||
Если Вы уже сделали `push`, то Вы по-прежнему можете исправить коммит, но после этого придется делать `push` с принудительной перезаписью, что не рекомендуется.
|
Если Вы уже сделали `push`, то Вы по-прежнему можете исправить коммит, но после этого придется делать `push` с принудительной перезаписью, что не рекомендуется.
|
||||||
|
|
||||||
<a name="commit-wrong-author"></a>
|
<a name="commit-wrong-author"></a>
|
||||||
|
|
||||||
### Я сделал коммит с неправильным именем автора и адресом электронной почты
|
### Я сделал коммит с неправильным именем автора и адресом электронной почты
|
||||||
|
|
||||||
Если это один коммит, то исправьте его с помощью `amend`
|
Если это один коммит, то исправьте его с помощью `amend`
|
||||||
@ -188,6 +223,7 @@ $ git commit --amend --no-edit
|
|||||||
Это особенно полезно, когда у Вас открытый патч, а Вы сохранили ненужный файл и теперь нужно сделать принудительный `push` для обновления патча в удаленном репозитории. Опция `--no-edit` оставляет прежнее сообщение коммита без изменений.
|
Это особенно полезно, когда у Вас открытый патч, а Вы сохранили ненужный файл и теперь нужно сделать принудительный `push` для обновления патча в удаленном репозитории. Опция `--no-edit` оставляет прежнее сообщение коммита без изменений.
|
||||||
|
|
||||||
<a name="delete-pushed-commit"></a>
|
<a name="delete-pushed-commit"></a>
|
||||||
|
|
||||||
### Я хочу удалить последний коммит
|
### Я хочу удалить последний коммит
|
||||||
|
|
||||||
Если хотите удалить опубликованные коммиты, воспользуйтесь приведенным ниже приемом. Однако, это бесповоротно изменит у Вас историю Git, а также испортит историю Git у любого, что уже стянул (pull) изменения из репозитория. Короче говоря, никогда так не делайте, если не уверены.
|
Если хотите удалить опубликованные коммиты, воспользуйтесь приведенным ниже приемом. Однако, это бесповоротно изменит у Вас историю Git, а также испортит историю Git у любого, что уже стянул (pull) изменения из репозитория. Короче говоря, никогда так не делайте, если не уверены.
|
||||||
@ -207,6 +243,7 @@ $ git push --force-with-lease [remote] [branch]
|
|||||||
Это работает, если Вы еще не сделали `push`. Если Вы уже сделали `push`, то единственный по-настоящему безопасный способ это `git revert SHAofBadCommit`. Это создаст новый коммит, который отменит все изменения предыдущего коммита. Или, если ветка, в которую вы делаете `push` безопасна для перезаписи (т.е. не предполагается, другие разработчики будут стягивать из нее изменения), то просто используйте `git push --force-with-lease`. Подробнее см. [в этом пункте выше](#delete-pushed-commit).
|
Это работает, если Вы еще не сделали `push`. Если Вы уже сделали `push`, то единственный по-настоящему безопасный способ это `git revert SHAofBadCommit`. Это создаст новый коммит, который отменит все изменения предыдущего коммита. Или, если ветка, в которую вы делаете `push` безопасна для перезаписи (т.е. не предполагается, другие разработчики будут стягивать из нее изменения), то просто используйте `git push --force-with-lease`. Подробнее см. [в этом пункте выше](#delete-pushed-commit).
|
||||||
|
|
||||||
<a name="delete-any-commit"></a>
|
<a name="delete-any-commit"></a>
|
||||||
|
|
||||||
### Удалить произвольный коммит
|
### Удалить произвольный коммит
|
||||||
|
|
||||||
Здесь уместны те же предупреждения, что и в пункте выше. По возможности, никогда так не делайте.
|
Здесь уместны те же предупреждения, что и в пункте выше. По возможности, никогда так не делайте.
|
||||||
@ -219,6 +256,7 @@ $ git push --force-with-lease [remote] [branch]
|
|||||||
Или сделайте [интерактивное перебазирование](#interactive-rebase) и удалите строки ненужных коммитов.
|
Или сделайте [интерактивное перебазирование](#interactive-rebase) и удалите строки ненужных коммитов.
|
||||||
|
|
||||||
<a name="#force-push"></a>
|
<a name="#force-push"></a>
|
||||||
|
|
||||||
### Я пытаюсь опубликовать исправленный коммит, но получаю сообщение об ошибке
|
### Я пытаюсь опубликовать исправленный коммит, но получаю сообщение об ошибке
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -231,7 +269,7 @@ hint: 'git pull ...') before pushing again.
|
|||||||
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
|
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
|
||||||
```
|
```
|
||||||
|
|
||||||
Напомним, что подобно перебазированию (см. ниже), исправление коммита (amend) **заменяет старый коммит новым**, поэтому Вы должны делать принудительный `push` (`--force-with-lease`) Ваших изменений, если хотите заменить уже опубликованные на удаленном репозитории коммиты. Будьте осторожны, когда так делаете – *всегда* проверяйте с какой веткой Вы проводите эти действия!
|
Напомним, что подобно перебазированию (см. ниже), исправление коммита (amend) **заменяет старый коммит новым**, поэтому Вы должны делать принудительный `push` (`--force-with-lease`) Ваших изменений, если хотите заменить уже опубликованные на удаленном репозитории коммиты. Будьте осторожны, когда так делаете – *всегда* проверяйте с какой веткой Вы проводите эти действия!
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
(my-branch)$ git push origin mybranch --force-with-lease
|
(my-branch)$ git push origin mybranch --force-with-lease
|
||||||
@ -242,11 +280,12 @@ hint: See the 'Note about fast-forwards' in 'git push --help' for details.
|
|||||||
Если Вы *абсолютно* уверены, что никто кроме Вас не работает с данной веткой или Вы хотите обновить вершину ветви в любом случае, то используйте `--force` (`-f`), но вообще этого следует избегать.
|
Если Вы *абсолютно* уверены, что никто кроме Вас не работает с данной веткой или Вы хотите обновить вершину ветви в любом случае, то используйте `--force` (`-f`), но вообще этого следует избегать.
|
||||||
|
|
||||||
<a href="undo-git-reset-hard"></a>
|
<a href="undo-git-reset-hard"></a>
|
||||||
|
|
||||||
### Я случайно сделал жесткий сброс (--hard) и теперь хочу вернуть свои изменения
|
### Я случайно сделал жесткий сброс (--hard) и теперь хочу вернуть свои изменения
|
||||||
|
|
||||||
Если Вы случайно сделали `git reset --hard`, то вы можете вернуть назад коммиты, т.к. Git несколько дней хранит все действия в журнале.
|
Если Вы случайно сделали `git reset --hard`, то вы можете вернуть назад коммиты, т.к. Git несколько дней хранит все действия в журнале.
|
||||||
|
|
||||||
Замечание: Это относится только если ваша работа была сохранена, т.е. Вы сделали коммит или stash. `git reset --hard` _удалит_ несохраненные изменения, так что пользуйтесь им с осторожностью. (Безопасная опция это `git reset --keep`.)
|
Замечание: Это относится только если ваша работа была сохранена, т.е. Вы сделали коммит или stash. `git reset --hard` *удалит* несохраненные изменения, так что пользуйтесь им с осторожностью. (Безопасная опция это `git reset --keep`.)
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
(master)$ git reflog
|
(master)$ git reflog
|
||||||
@ -263,6 +302,7 @@ hint: See the 'Note about fast-forwards' in 'git push --help' for details.
|
|||||||
## Подготовка изменений (staging)
|
## Подготовка изменений (staging)
|
||||||
|
|
||||||
<a href="#i-need-to-add-staged-changes-to-the-previous-commit"></a>
|
<a href="#i-need-to-add-staged-changes-to-the-previous-commit"></a>
|
||||||
|
|
||||||
### Мне нужно добавить подготовленные изменения в предыдущий коммит
|
### Мне нужно добавить подготовленные изменения в предыдущий коммит
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -271,6 +311,7 @@ hint: See the 'Note about fast-forwards' in 'git push --help' for details.
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="commit-partial-new-file"></a>
|
<a name="commit-partial-new-file"></a>
|
||||||
|
|
||||||
### Я хочу подготовить только часть файла, а не весь файл целиком
|
### Я хочу подготовить только часть файла, а не весь файл целиком
|
||||||
|
|
||||||
Обычно, если хотите подготовить часть файл, Вы запускаете:
|
Обычно, если хотите подготовить часть файл, Вы запускаете:
|
||||||
@ -289,11 +330,13 @@ $ git add -N filename.x
|
|||||||
`git diff --staged`, Вы увидите какие строки вы подготовили по-сравнению с тем, что сохранено в рабочей копии.
|
`git diff --staged`, Вы увидите какие строки вы подготовили по-сравнению с тем, что сохранено в рабочей копии.
|
||||||
|
|
||||||
<a href="stage-in-two-commits"></a>
|
<a href="stage-in-two-commits"></a>
|
||||||
|
|
||||||
### Я хочу добавить изменения одного файла в два разных коммита
|
### Я хочу добавить изменения одного файла в два разных коммита
|
||||||
|
|
||||||
`git add` добавляет в коммит весь файл целиком. `git add -p` позволяет интерактивно выбрать изменения, которые Вы хотите добавить.
|
`git add` добавляет в коммит весь файл целиком. `git add -p` позволяет интерактивно выбрать изменения, которые Вы хотите добавить.
|
||||||
|
|
||||||
<a href="unstaging-edits-and-staging-the-unstaged"></a>
|
<a href="unstaging-edits-and-staging-the-unstaged"></a>
|
||||||
|
|
||||||
### Я хочу подготовить свои неподготовленные правки и убрать из подготовки то, что уже подготовлено
|
### Я хочу подготовить свои неподготовленные правки и убрать из подготовки то, что уже подготовлено
|
||||||
|
|
||||||
Это сложно. Лучшее, что я смог придумать это отложить (stash) неподготовленные изменения. Затем сделать сброс. После этого вернуть отложенные изменения и добавить их.
|
Это сложно. Лучшее, что я смог придумать это отложить (stash) неподготовленные изменения. Затем сделать сброс. После этого вернуть отложенные изменения и добавить их.
|
||||||
@ -308,6 +351,7 @@ $ git add -A
|
|||||||
## Неподготовленные правки
|
## Неподготовленные правки
|
||||||
|
|
||||||
<a href="move-unstaged-edits-to-new-branch"></a>
|
<a href="move-unstaged-edits-to-new-branch"></a>
|
||||||
|
|
||||||
### Я хочу переместить мои неподготовленные правки в новую ветку
|
### Я хочу переместить мои неподготовленные правки в новую ветку
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -315,6 +359,7 @@ $ git checkout -b my-branch
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a href="move-unstaged-edits-to-old-branch"></a>
|
<a href="move-unstaged-edits-to-old-branch"></a>
|
||||||
|
|
||||||
### Я хочу переместить неподготовленные правки в другую существующую ветку
|
### Я хочу переместить неподготовленные правки в другую существующую ветку
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -324,6 +369,7 @@ $ git stash pop
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a href="i-want-to-discard-my-local-uncommitted-changes"></a>
|
<a href="i-want-to-discard-my-local-uncommitted-changes"></a>
|
||||||
|
|
||||||
### Я хочу отменить мои локальные несохраненные изменения (подготовленные и неподготовленные)
|
### Я хочу отменить мои локальные несохраненные изменения (подготовленные и неподготовленные)
|
||||||
|
|
||||||
Если Вы хотите отменить все подготовленные и неподготовленные изменения, то можете сделать так:
|
Если Вы хотите отменить все подготовленные и неподготовленные изменения, то можете сделать так:
|
||||||
@ -417,6 +463,7 @@ $ git checkout .
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a href="i-want-to-discard-all-my-untracked-files"></a>
|
<a href="i-want-to-discard-all-my-untracked-files"></a>
|
||||||
|
|
||||||
### Я хочу удалить все неотслеживаемые файлы
|
### Я хочу удалить все неотслеживаемые файлы
|
||||||
|
|
||||||
Когда Вы хотите удалить все неотслеживаемые файлы
|
Когда Вы хотите удалить все неотслеживаемые файлы
|
||||||
@ -448,12 +495,15 @@ $ git branch -a
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="create-branch-from-commit"></a>
|
<a name="create-branch-from-commit"></a>
|
||||||
|
|
||||||
### Создать ветку на определенном коммите
|
### Создать ветку на определенном коммите
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ git checkout -b <branch> <SHA1_OF_COMMIT>
|
$ git checkout -b <branch> <SHA1_OF_COMMIT>
|
||||||
```
|
```
|
||||||
|
|
||||||
<a name="pull-wrong-branch"></a>
|
<a name="pull-wrong-branch"></a>
|
||||||
|
|
||||||
### Я стянул изменения (pull) из неправильной ветки или в неправильную ветку
|
### Я стянул изменения (pull) из неправильной ветки или в неправильную ветку
|
||||||
|
|
||||||
Это очередная возможность воспользоваться `git reflog`, чтобы посмотреть куда указывала ваша HEAD перед неправильным pull.
|
Это очередная возможность воспользоваться `git reflog`, чтобы посмотреть куда указывала ваша HEAD перед неправильным pull.
|
||||||
@ -473,6 +523,7 @@ $ git reset --hard c5bc55a
|
|||||||
Готово.
|
Готово.
|
||||||
|
|
||||||
<a href="discard-local-commits"></a>
|
<a href="discard-local-commits"></a>
|
||||||
|
|
||||||
### Я хочу отменить локальные коммиты, чтобы моя ветка стала такой же как на сервере
|
### Я хочу отменить локальные коммиты, чтобы моя ветка стала такой же как на сервере
|
||||||
|
|
||||||
Подтвердите, что не хотите отправлять изменения на сервер.
|
Подтвердите, что не хотите отправлять изменения на сервер.
|
||||||
@ -494,6 +545,7 @@ $ git reset --hard c5bc55a
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="commit-wrong-branch"></a>
|
<a name="commit-wrong-branch"></a>
|
||||||
|
|
||||||
### Я сохранил коммит в ветку master вместо новой ветки
|
### Я сохранил коммит в ветку master вместо новой ветки
|
||||||
|
|
||||||
Создайте новую ветку, оставаясь на master:
|
Создайте новую ветку, оставаясь на master:
|
||||||
@ -528,6 +580,7 @@ HEAD is now at a13b85e
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="keep-whole-file"></a>
|
<a name="keep-whole-file"></a>
|
||||||
|
|
||||||
### Я хочу сохранить файл целиком из другого ref-ish
|
### Я хочу сохранить файл целиком из другого ref-ish
|
||||||
|
|
||||||
Скажем, у Вас рабочий spike (см. заметку) на сотни изменений. Всё работает. Теперь Вы сохраняете эту работу в другую ветку:
|
Скажем, у Вас рабочий spike (см. заметку) на сотни изменений. Всё работает. Теперь Вы сохраняете эту работу в другую ветку:
|
||||||
@ -540,8 +593,8 @@ HEAD is now at a13b85e
|
|||||||
|
|
||||||
Скажем, Вы имеете:
|
Скажем, Вы имеете:
|
||||||
|
|
||||||
* ветку `solution` с решением к Вашему spike. На один коммит впереди `develop`.
|
- ветку `solution` с решением к Вашему spike. На один коммит впереди `develop`.
|
||||||
* ветку `develop`, куда Вы хотите добавить Ваши изменения.
|
- ветку `develop`, куда Вы хотите добавить Ваши изменения.
|
||||||
|
|
||||||
Вы можете выполнить это, перенеся содержимое файла в Вашу ветку:
|
Вы можете выполнить это, перенеся содержимое файла в Вашу ветку:
|
||||||
|
|
||||||
@ -565,6 +618,7 @@ HEAD is now at a13b85e
|
|||||||
Заметка: Spike-решения делаются для анализа или решения проблемы. Эти решения используют, чтобы оценить проблему, и отбрасывают сразу же, как только все получают ясное представление о проблеме. ~ [Wikipedia](https://en.wikipedia.org/wiki/Extreme_programming_practices).
|
Заметка: Spike-решения делаются для анализа или решения проблемы. Эти решения используют, чтобы оценить проблему, и отбрасывают сразу же, как только все получают ясное представление о проблеме. ~ [Wikipedia](https://en.wikipedia.org/wiki/Extreme_programming_practices).
|
||||||
|
|
||||||
<a name="cherry-pick"></a>
|
<a name="cherry-pick"></a>
|
||||||
|
|
||||||
### Я сделал несколько коммитов в одной ветке, а нужно было сохранять их в разных ветках
|
### Я сделал несколько коммитов в одной ветке, а нужно было сохранять их в разных ветках
|
||||||
|
|
||||||
Скажем, Вы в ветке master. Запустив `git log`, Вы увидите, что сделали два коммита:
|
Скажем, Вы в ветке master. Запустив `git log`, Вы увидите, что сделали два коммита:
|
||||||
@ -630,7 +684,9 @@ HEAD is now at a13b85e
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="delete-stale-local-branches"></a>
|
<a name="delete-stale-local-branches"></a>
|
||||||
|
|
||||||
### Я хочу удалить локальные ветки, которые были удалены в upstream
|
### Я хочу удалить локальные ветки, которые были удалены в upstream
|
||||||
|
|
||||||
Как только Вы слили пулл-реквест на GitHub, Вам предлагают удалить слитую ветку из Вашего форка. Если Вы не планируете продолжать работу в этой ветке, то для поддержания рабочей копии в чистоте Вы можете удалить локальные копии ненужных веток, чтобы не путаться в них.
|
Как только Вы слили пулл-реквест на GitHub, Вам предлагают удалить слитую ветку из Вашего форка. Если Вы не планируете продолжать работу в этой ветке, то для поддержания рабочей копии в чистоте Вы можете удалить локальные копии ненужных веток, чтобы не путаться в них.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -639,7 +695,8 @@ $ git fetch -p upstream
|
|||||||
|
|
||||||
где `upstream` - удаленная ветка, из которой Вы хотите получить изменения.
|
где `upstream` - удаленная ветка, из которой Вы хотите получить изменения.
|
||||||
|
|
||||||
<a name='restore-a-deleted-branch'></a>
|
<a name="restore-a-deleted-branch"></a>
|
||||||
|
|
||||||
### Я нечаянно удалил мою ветку
|
### Я нечаянно удалил мою ветку
|
||||||
|
|
||||||
Если Вы регулярно отправляете изменения в удаленное хранилище, большую часть времени Вы в безопасности. Но в один прекрасный момент Вы всё же можете случайно удалить Ваши ветки. Скажем, мы создали ветку и создали новый файл:
|
Если Вы регулярно отправляете изменения в удаленное хранилище, большую часть времени Вы в безопасности. Но в один прекрасный момент Вы всё же можете случайно удалить Ваши ветки. Скажем, мы создали ветку и создали новый файл:
|
||||||
@ -758,6 +815,7 @@ README.md foo.txt
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="i-want-to-checkout-to-a-remote-branch-that-someone-else-is-working-on"></a>
|
<a name="i-want-to-checkout-to-a-remote-branch-that-someone-else-is-working-on"></a>
|
||||||
|
|
||||||
### Я хочу перейти на удаленную ветку, над которой работает кто-то еще
|
### Я хочу перейти на удаленную ветку, над которой работает кто-то еще
|
||||||
|
|
||||||
Во-первых, получим все ветки из удаленного репозитория:
|
Во-первых, получим все ветки из удаленного репозитория:
|
||||||
@ -781,13 +839,13 @@ Switched to a new branch 'daves'
|
|||||||
### Я хочу создать новую удаленную ветку из текущей локальной
|
### Я хочу создать новую удаленную ветку из текущей локальной
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ git push <remote>
|
$ git push <remote> HEAD
|
||||||
```
|
```
|
||||||
|
|
||||||
Если Вы хотите, чтобы текущая локальная ветка отслеживала соответствующую удаленную (upstream) ветку, тогда выполните следующее:
|
Если Вы хотите, чтобы текущая локальная ветка отслеживала соответствующую удаленную (upstream) ветку, тогда выполните следующее:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ git push -u <remote>
|
$ git push -u <remote> HEAD
|
||||||
```
|
```
|
||||||
|
|
||||||
В режиме `upstream` или в режиме `simple` (по-умолчанию в Git 2.0) параметра `push.default`, следующая команда отправит текущую ветку в удаленную ветку, которая была ранее зарегистрирована с помощью -u :
|
В режиме `upstream` или в режиме `simple` (по-умолчанию в Git 2.0) параметра `push.default`, следующая команда отправит текущую ветку в удаленную ветку, которая была ранее зарегистрирована с помощью -u :
|
||||||
@ -815,6 +873,7 @@ $ git branch -u [remotename]/[branch] [local-branch]
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="i-want-to-set-my-HEAD-to-track-the-default-remote-branch"></a>
|
<a name="i-want-to-set-my-HEAD-to-track-the-default-remote-branch"></a>
|
||||||
|
|
||||||
### Я хочу настроить HEAD на отслеживание основной удаленной ветки
|
### Я хочу настроить HEAD на отслеживание основной удаленной ветки
|
||||||
|
|
||||||
При просмотре удаленных веток можно увидеть какую удаленную ветку отслеживает HEAD. Может оказаться, что это не та ветка что нужно.
|
При просмотре удаленных веток можно увидеть какую удаленную ветку отслеживает HEAD. Может оказаться, что это не та ветка что нужно.
|
||||||
@ -845,6 +904,7 @@ origin/HEAD set to master
|
|||||||
## Перебазирование (rebase) и слияние (merge)
|
## Перебазирование (rebase) и слияние (merge)
|
||||||
|
|
||||||
<a name="undo-rebase"></a>
|
<a name="undo-rebase"></a>
|
||||||
|
|
||||||
### Я хочу отменить перебазирование/слияние
|
### Я хочу отменить перебазирование/слияние
|
||||||
|
|
||||||
Вы можете слить/перебазировать Вашу ветку с неправильной веткой. А также бывают случаи, когда Вы не можете предугадать успешно ли завершится процесс перебазирования/слияния. Git сохраняет исходный указатель HEAD в переменную ORIG_HEAD перед тем как приступить к опасным операциям, так что вернуть ветку на состояние до перебазирования/слияния просто.
|
Вы можете слить/перебазировать Вашу ветку с неправильной веткой. А также бывают случаи, когда Вы не можете предугадать успешно ли завершится процесс перебазирования/слияния. Git сохраняет исходный указатель HEAD в переменную ORIG_HEAD перед тем как приступить к опасным операциям, так что вернуть ветку на состояние до перебазирования/слияния просто.
|
||||||
@ -854,6 +914,7 @@ origin/HEAD set to master
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="force-push-rebase"></a>
|
<a name="force-push-rebase"></a>
|
||||||
|
|
||||||
### Я сделал перебазирование, но я не хочу делать принудительный push
|
### Я сделал перебазирование, но я не хочу делать принудительный push
|
||||||
|
|
||||||
К сожалению, вы должны сделать принудительный push, если хотите, чтобы изменения были отражены на удаленной ветке. Это потому что у вас изменена история. Удаленная ветка не примет изменения, если не сделать принудительный push. Это одна из основных причин, по которым большинство людей основывает свой рабочий процесс на слиянии вместо перебазирования - большие команды могут столкнуться с проблемами, если разработчики будут делать принудительный `push`. Используйте это с осторожностью. Безопасный способ использовать перебазирование - это не отражать Ваши изменения напрямую на удаленную ветку, а вместо этого делать следующее:
|
К сожалению, вы должны сделать принудительный push, если хотите, чтобы изменения были отражены на удаленной ветке. Это потому что у вас изменена история. Удаленная ветка не примет изменения, если не сделать принудительный push. Это одна из основных причин, по которым большинство людей основывает свой рабочий процесс на слиянии вместо перебазирования - большие команды могут столкнуться с проблемами, если разработчики будут делать принудительный `push`. Используйте это с осторожностью. Безопасный способ использовать перебазирование - это не отражать Ваши изменения напрямую на удаленную ветку, а вместо этого делать следующее:
|
||||||
@ -868,6 +929,7 @@ origin/HEAD set to master
|
|||||||
Чтобы узнать больше, см. [эту SO ветку](https://stackoverflow.com/questions/11058312/how-can-i-use-git-rebase-without-requiring-a-forced-push).
|
Чтобы узнать больше, см. [эту SO ветку](https://stackoverflow.com/questions/11058312/how-can-i-use-git-rebase-without-requiring-a-forced-push).
|
||||||
|
|
||||||
<a name="interactive-rebase"></a>
|
<a name="interactive-rebase"></a>
|
||||||
|
|
||||||
### Я хочу объединить коммиты
|
### Я хочу объединить коммиты
|
||||||
|
|
||||||
Предположим, что Вы работаете в ветке, которая стала или станет пулл-реквестом в `master`. В простейшем случае когда всё, что Вы хотите сделать - это объединить *все* коммиты в один единственный коммит и Вам не важны временные метки, Вы можете сделать сброс и заново сделать коммит. Убедитесь, что ветка master обновлена и Ваши изменения сохранены, затем:
|
Предположим, что Вы работаете в ветке, которая стала или станет пулл-реквестом в `master`. В простейшем случае когда всё, что Вы хотите сделать - это объединить *все* коммиты в один единственный коммит и Вам не важны временные метки, Вы можете сделать сброс и заново сделать коммит. Убедитесь, что ветка master обновлена и Ваши изменения сохранены, затем:
|
||||||
@ -961,6 +1023,7 @@ Newer, awesomer features
|
|||||||
```
|
```
|
||||||
|
|
||||||
#### Безопасная стратегия слияния
|
#### Безопасная стратегия слияния
|
||||||
|
|
||||||
`--no-commit` производит слияние, но не делает коммит результата, давая пользователю возможность проверить и доработать результат слияния перед коммитом. `no-ff` сохраняет доказательства того, что когда-то существовала ветка feature, сохраняя цельность истории проекта.
|
`--no-commit` производит слияние, но не делает коммит результата, давая пользователю возможность проверить и доработать результат слияния перед коммитом. `no-ff` сохраняет доказательства того, что когда-то существовала ветка feature, сохраняя цельность истории проекта.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -974,6 +1037,7 @@ Newer, awesomer features
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="rebase-unpushed-commits"></a>
|
<a name="rebase-unpushed-commits"></a>
|
||||||
|
|
||||||
#### Я хочу объединить только неопубликованные коммиты
|
#### Я хочу объединить только неопубликованные коммиты
|
||||||
|
|
||||||
Иногда у Вас бывает несколько временных коммитов, которые Вы хотите объединить перед публикацией в upstream. Вы не хотите ненароком объединить свои коммиты с уже опубликованными, потому что кто-то уже мог работать с ними.
|
Иногда у Вас бывает несколько временных коммитов, которые Вы хотите объединить перед публикацией в upstream. Вы не хотите ненароком объединить свои коммиты с уже опубликованными, потому что кто-то уже мог работать с ними.
|
||||||
@ -1011,19 +1075,22 @@ Newer, awesomer features
|
|||||||
### Возможные проблемы интерактивного перебазирования
|
### Возможные проблемы интерактивного перебазирования
|
||||||
|
|
||||||
<a name="noop"></a>
|
<a name="noop"></a>
|
||||||
|
|
||||||
#### Экран перебазирования говорит 'noop'
|
#### Экран перебазирования говорит 'noop'
|
||||||
|
|
||||||
Если Вы видите это:
|
Если Вы видите это:
|
||||||
|
|
||||||
```
|
```
|
||||||
noop
|
noop
|
||||||
```
|
```
|
||||||
|
|
||||||
Это значит, что Вы пытаетесь сделать перебазирование в ветку, которая уже имеет идентичный коммит или она *впереди* текущей ветки. Вы может попробовать:
|
Это значит, что Вы пытаетесь сделать перебазирование в ветку, которая уже имеет идентичный коммит или она *впереди* текущей ветки. Вы может попробовать:
|
||||||
|
|
||||||
* удостовериться что Ваша ветка master находится там, где она должна быть
|
- удостовериться что Ваша ветка master находится там, где она должна быть
|
||||||
* вместо этого перебазировать `HEAD~2` или что-то более раннее
|
- вместо этого перебазировать `HEAD~2` или что-то более раннее
|
||||||
|
|
||||||
<a name="merge-conflict"></a>
|
<a name="merge-conflict"></a>
|
||||||
|
|
||||||
#### Здесь были конфликты
|
#### Здесь были конфликты
|
||||||
|
|
||||||
Если Вам не удается успешно завершить перебазирование, то, возможно, Вам придется разрешать конфликты.
|
Если Вам не удается успешно завершить перебазирование, то, возможно, Вам придется разрешать конфликты.
|
||||||
@ -1083,6 +1150,7 @@ Changes not staged for commit:
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="stashing"></a>
|
<a name="stashing"></a>
|
||||||
|
|
||||||
## Отложенные изменения (stash)
|
## Отложенные изменения (stash)
|
||||||
|
|
||||||
### Отложить все правки
|
### Отложить все правки
|
||||||
@ -1114,6 +1182,7 @@ $ git stash push working-directory-path/filename1.ext working-directory-path/fil
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="stash-msg"></a>
|
<a name="stash-msg"></a>
|
||||||
|
|
||||||
### Отложить с сообщением
|
### Отложить с сообщением
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -1121,6 +1190,7 @@ $ git stash save <message>
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="stash-apply-specific"></a>
|
<a name="stash-apply-specific"></a>
|
||||||
|
|
||||||
### Применить заданный stash из списка
|
### Применить заданный stash из списка
|
||||||
|
|
||||||
Во-первых, проверьте список отложенных изменений, используя
|
Во-первых, проверьте список отложенных изменений, используя
|
||||||
@ -1149,13 +1219,14 @@ $ git log -S "string to find"
|
|||||||
|
|
||||||
Общие параметры:
|
Общие параметры:
|
||||||
|
|
||||||
* `--source` показывает ссылки, от которых можно добраться до каждого коммита.
|
- `--source` показывает ссылки, от которых можно добраться до каждого коммита.
|
||||||
|
|
||||||
* `--all` ищет во всех ветках.
|
- `--all` ищет во всех ветках.
|
||||||
|
|
||||||
* `--reverse` выводит коммиты в обратном порядке, это значит, что вверху будет первый коммит, в котором сделано это изменение.
|
- `--reverse` выводит коммиты в обратном порядке, это значит, что вверху будет первый коммит, в котором сделано это изменение.
|
||||||
|
|
||||||
<a name="i-want-to-find-by-author-committer"></a>
|
<a name="i-want-to-find-by-author-committer"></a>
|
||||||
|
|
||||||
### Я хочу искать по автору или сохранившему изменения (committer)
|
### Я хочу искать по автору или сохранившему изменения (committer)
|
||||||
|
|
||||||
Найти все коммиты по автору или сохранившему изменения:
|
Найти все коммиты по автору или сохранившему изменения:
|
||||||
@ -1181,7 +1252,7 @@ $ git log -- <path to file>
|
|||||||
$ git log -- **/*.js
|
$ git log -- **/*.js
|
||||||
```
|
```
|
||||||
|
|
||||||
При использовании подстановочных знаков используйте `--name-status` для просмотра списка сохраненных файлов, сохраненных в каждом коммите:
|
При использовании подстановочных знаков используйте `--name-status` для просмотра списка файлов, сохраненных в каждом коммите:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ git log --name-status -- **/*.js
|
$ git log --name-status -- **/*.js
|
||||||
@ -1198,6 +1269,7 @@ $ git tag --contains <commitid>
|
|||||||
## Субмодули
|
## Субмодули
|
||||||
|
|
||||||
<a name="clone-submodules"></a>
|
<a name="clone-submodules"></a>
|
||||||
|
|
||||||
### Клонировать все субмодули
|
### Клонировать все субмодули
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -1211,6 +1283,7 @@ $ git submodule update --init --recursive
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="delete-submodule"></a>
|
<a name="delete-submodule"></a>
|
||||||
|
|
||||||
### Удалить субмодуль
|
### Удалить субмодуль
|
||||||
|
|
||||||
Создание субмодуля довольно прямолинейно, чего не скажешь об удалении. Команды, которые Вам нужны:
|
Создание субмодуля довольно прямолинейно, чего не скажешь об удалении. Команды, которые Вам нужны:
|
||||||
@ -1246,6 +1319,7 @@ $ git push <remote> :refs/tags/<tag_name>
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="recover-tag"></a>
|
<a name="recover-tag"></a>
|
||||||
|
|
||||||
### Восстановить удаленную метку
|
### Восстановить удаленную метку
|
||||||
|
|
||||||
Если хотите восстановить метку, которая была удалена, Вы можете сделать следующее: во-первых, Вам нужно найти недостижимую метку:
|
Если хотите восстановить метку, которая была удалена, Вы можете сделать следующее: во-первых, Вам нужно найти недостижимую метку:
|
||||||
@ -1281,6 +1355,7 @@ $ git archive --format zip --output /full/path/to/zipfile.zip master
|
|||||||
## Отслеживание файлов
|
## Отслеживание файлов
|
||||||
|
|
||||||
<a href="i-want-to-change-a-file-names-capitalization-without-changing-the-contents-of-the-file"></a>
|
<a href="i-want-to-change-a-file-names-capitalization-without-changing-the-contents-of-the-file"></a>
|
||||||
|
|
||||||
### Я хочу изменить регистр в имени файла, не меняя содержимое файла
|
### Я хочу изменить регистр в имени файла, не меняя содержимое файла
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -1295,6 +1370,7 @@ $ git archive --format zip --output /full/path/to/zipfile.zip master
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a href="remove-from-git"></a>
|
<a href="remove-from-git"></a>
|
||||||
|
|
||||||
### Я хочу удалить файл из git, но оставить сам файл
|
### Я хочу удалить файл из git, но оставить сам файл
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -1315,12 +1391,25 @@ $ git archive --format zip --output /full/path/to/zipfile.zip master
|
|||||||
(master)$ git checkout c5f567~1 -- file1/to/restore file2/to/restore
|
(master)$ git checkout c5f567~1 -- file1/to/restore file2/to/restore
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Я хочу получить список изменений в заданном файле из разных коммитов или веток
|
||||||
|
|
||||||
|
Полагая, что Вы хотите сравнить последний коммит с файлом из коммита c5f567:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ git diff HEAD:path_to_file/file c5f567:path_to_file/file
|
||||||
|
```
|
||||||
|
|
||||||
|
Аналогично для веток:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ git diff master:path_to_file/file staging:path_to_file/file
|
||||||
|
```
|
||||||
|
|
||||||
## Конфигурация
|
## Конфигурация
|
||||||
|
|
||||||
<a name="adding-command-aliases"></a>
|
|
||||||
### Я хочу добавить псевдонимы для некоторых команд Git
|
### Я хочу добавить псевдонимы для некоторых команд Git
|
||||||
|
|
||||||
В OS X и Linux Ваш файл конфигурации Git хранится в ```~/.gitconfig```. В качестве примера я добавил некоторые псевдонимы, которые сам использую для краткости (а также некоторые из моих типичных опечаток), в раздел ```[alias]``` как показано ниже:
|
В OS X и Linux Ваш файл конфигурации Git хранится в `~/.gitconfig`. В качестве примера я добавил некоторые псевдонимы, которые сам использую для краткости (а также некоторые из моих типичных опечаток), в раздел `[alias]` как показано ниже:
|
||||||
|
|
||||||
```vim
|
```vim
|
||||||
[alias]
|
[alias]
|
||||||
@ -1345,7 +1434,6 @@ $ git archive --format zip --output /full/path/to/zipfile.zip master
|
|||||||
zap = fetch -p
|
zap = fetch -p
|
||||||
```
|
```
|
||||||
|
|
||||||
<a name="adding-empty-repository"></a>
|
|
||||||
### Я хочу добавить в свой репозиторий пустую папку
|
### Я хочу добавить в свой репозиторий пустую папку
|
||||||
|
|
||||||
Вы не можете этого сделать! Git просто не поддерживает этого, но есть уловка. Вы можете создать файл .gitignore в папке со следующим содержанием:
|
Вы не можете этого сделать! Git просто не поддерживает этого, но есть уловка. Вы можете создать файл .gitignore в папке со следующим содержанием:
|
||||||
@ -1364,9 +1452,8 @@ $ mkdir mydir
|
|||||||
$ touch mydir/.gitkeep
|
$ touch mydir/.gitkeep
|
||||||
```
|
```
|
||||||
|
|
||||||
Вы можете назвать его просто .keep , в этом случае вторая строка выше будет ```touch mydir/.keep```
|
Вы можете назвать его просто .keep , в этом случае вторая строка выше будет `touch mydir/.keep`
|
||||||
|
|
||||||
<a name="credential-helper"></a>
|
|
||||||
### Я хочу сохранить имя пользователя и пароль для репозитория
|
### Я хочу сохранить имя пользователя и пароль для репозитория
|
||||||
|
|
||||||
У Вас может быть репозиторий, требующий авторизации. В этом случае вы можете сохранить на время имя пользователя и пароль, и Вам не потребуется вводить их при каждом вызове push / pull. Помощник по учетным записям сделает это за Вас.
|
У Вас может быть репозиторий, требующий авторизации. В этом случае вы можете сохранить на время имя пользователя и пароль, и Вам не потребуется вводить их при каждом вызове push / pull. Помощник по учетным записям сделает это за Вас.
|
||||||
@ -1393,6 +1480,28 @@ $ git config core.fileMode false
|
|||||||
$ git config --global core.fileMode false
|
$ git config --global core.fileMode false
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Я хочу задать данные пользователя в глобальных настройках
|
||||||
|
|
||||||
|
Чтобы настроить информацию о пользователе, используемую во всех локальных репозиториях, в частности имя, отображаемое в истории изменений:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ git config --global user.name “[firstname lastname]”
|
||||||
|
```
|
||||||
|
|
||||||
|
Чтобы настроить адрес электронной почты, который будет связан с каждой записью в историю:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git config --global user.email “[valid-email]”
|
||||||
|
```
|
||||||
|
|
||||||
|
### Я хочу настроить цветовую схему для командной строки Git
|
||||||
|
|
||||||
|
Для наглядности можно настроить автоматическую цветовую схему командной строки Git:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ git config --global color.ui auto
|
||||||
|
```
|
||||||
|
|
||||||
## Я не представляю что я сделал неправильно
|
## Я не представляю что я сделал неправильно
|
||||||
|
|
||||||
Итак, Вы в затруднении - Вы сбросили что-то или Вы слили неправильную ветку, или Вы отправили изменения с принудительной перезаписью и теперь Вы не можете найти свои коммиты. Вы знаете, что в какой-то момент было всё в порядке и Вы хотите вернуться к этому состоянию.
|
Итак, Вы в затруднении - Вы сбросили что-то или Вы слили неправильную ветку, или Вы отправили изменения с принудительной перезаписью и теперь Вы не можете найти свои коммиты. Вы знаете, что в какой-то момент было всё в порядке и Вы хотите вернуться к этому состоянию.
|
||||||
@ -1422,37 +1531,38 @@ $ git reset --hard 0254ea7
|
|||||||
|
|
||||||
## Книги
|
## Книги
|
||||||
|
|
||||||
* [Pro Git](https://git-scm.com/book/en/v2) - великолепная книга Скотта Чакона и Бена Страуба про Git
|
- [Pro Git](https://git-scm.com/book/en/v2) - великолепная книга Скотта Чакона и Бена Страуба про Git
|
||||||
* [Git Internals](https://github.com/pluralsight/git-internals-pdf) - еще одна великолепная книга Скотта Чакона, посвященная Git
|
- [Git Internals](https://github.com/pluralsight/git-internals-pdf) - еще одна великолепная книга Скотта Чакона, посвященная Git
|
||||||
|
|
||||||
## Учебники
|
## Учебники
|
||||||
|
|
||||||
* [Atlassian's Git tutorial](https://www.atlassian.com/git/tutorials) Получите Git сразу с учебниками от начального до продвинутого уровня.
|
- [Atlassian's Git tutorial](https://www.atlassian.com/git/tutorials) Получите Git сразу с учебниками от начального до продвинутого уровня.
|
||||||
* [Изучаем ветвление в Git](https://learngitbranching.js.org/) Интерактивный веб-учебник по ветвлению/слиянию/перебазированию
|
- [Изучаем ветвление в Git](https://learngitbranching.js.org/) Интерактивный веб-учебник по ветвлению/слиянию/перебазированию
|
||||||
* [Getting solid at Git rebase vs. merge](https://medium.com/@porteneuve/getting-solid-at-git-rebase-vs-merge-4fa1a48c53aa)
|
- [Getting solid at Git rebase vs. merge](https://medium.com/@porteneuve/getting-solid-at-git-rebase-vs-merge-4fa1a48c53aa)
|
||||||
* [git-workflow](https://github.com/asmeurer/git-workflow) - Руководство от [Aaron Meurer](https://github.com/asmeurer) по использованию Git в совместной разработке проектов с открытым исходным кодом
|
- [git-workflow](https://github.com/asmeurer/git-workflow) - Руководство от [Aaron Meurer](https://github.com/asmeurer) по использованию Git в совместной разработке проектов с открытым исходным кодом
|
||||||
* [GitHub как рабочий процесс](https://hugogiraudel.com/2015/08/13/github-as-a-workflow/) - Интересный подход к использованию GitHub в качестве рабочего процесса, в частности с пустыми пулл-реквестами
|
- [GitHub как рабочий процесс](https://hugogiraudel.com/2015/08/13/github-as-a-workflow/) - Интересный подход к использованию GitHub в качестве рабочего процесса, в частности с пустыми пулл-реквестами
|
||||||
* [Githug](https://github.com/Gazler/githug) - Игра для изучения более общих рабочих процессов Git
|
- [Githug](https://github.com/Gazler/githug) - Игра для изучения более общих рабочих процессов Git
|
||||||
|
|
||||||
## Скрипты и инструменты
|
## Скрипты и инструменты
|
||||||
|
|
||||||
* [firstaidgit.io](http://firstaidgit.io/) Выборка наиболее частых вопросов и ответов по Git c поиском
|
- [firstaidgit.io](http://firstaidgit.io/) Выборка наиболее частых вопросов и ответов по Git c поиском
|
||||||
* [git-extra-commands](https://github.com/unixorn/git-extra-commands) - сборник полезных дополнительных скриптов для Git
|
- [git-extra-commands](https://github.com/unixorn/git-extra-commands) - сборник полезных дополнительных скриптов для Git
|
||||||
* [git-extras](https://github.com/tj/git-extras) - GIT utilities -- статистика репозитория, REPL, генерация журнала изменений, статистика по авторам изменений и многое другое
|
- [git-extras](https://github.com/tj/git-extras) - GIT utilities -- статистика репозитория, REPL, генерация журнала изменений, статистика по авторам изменений и многое другое
|
||||||
* [git-fire](https://github.com/qw3rtman/git-fire) - git-fire - это плагин для Git, который предупреждает при потенциально опасных действиях, таких как: добавление всех файлов из текущей папки, создание коммита и публикация измений в новую ветку (для предотвращения конфликтов при слиянии).
|
- [git-fire](https://github.com/qw3rtman/git-fire) - git-fire - это плагин для Git, который предупреждает при потенциально опасных действиях, таких как: добавление всех файлов из текущей папки, создание коммита и публикация измений в новую ветку (для предотвращения конфликтов при слиянии).
|
||||||
* [git-tips](https://github.com/git-tips/tips) - Краткие советы по Git
|
- [git-tips](https://github.com/git-tips/tips) - Краткие советы по Git
|
||||||
* [git-town](https://github.com/Originate/git-town) - Общая высокоуровневая поддержка рабочего процесса Git! http://www.git-town.com
|
- [git-town](https://github.com/Originate/git-town) - Общая высокоуровневая поддержка рабочего процесса Git! http://www.git-town.com
|
||||||
|
|
||||||
## Графические клиенты
|
## Графические клиенты
|
||||||
* [GitKraken](https://www.gitkraken.com/) - роскошный Git-клиент для Windows, Mac и Linux
|
|
||||||
* [git-cola](https://git-cola.github.io/) - еще один Git-клиент для Windows и OS X
|
- [GitKraken](https://www.gitkraken.com/) - роскошный Git-клиент для Windows, Mac и Linux
|
||||||
* [GitUp](https://github.com/git-up/GitUp) - новый графический клиент, имеющий весьма своеобразные методы работы со сложностями Git
|
- [git-cola](https://git-cola.github.io/) - еще один Git-клиент для Windows и OS X
|
||||||
* [gitx-dev](https://rowanj.github.io/gitx/) - еще один графический Git-клиент для OS X
|
- [GitUp](https://github.com/git-up/GitUp) - новый графический клиент, имеющий весьма своеобразные методы работы со сложностями Git
|
||||||
* [Sourcetree](https://www.sourcetreeapp.com/) - Простота и мощь в красивом и свободном графическом Git-клиенте. Для Windows и Mac.
|
- [gitx-dev](https://rowanj.github.io/gitx/) - еще один графический Git-клиент для OS X
|
||||||
* [Tower](https://www.git-tower.com/) - графический Git-клиент для OS X (платный)
|
- [Sourcetree](https://www.sourcetreeapp.com/) - Простота и мощь в красивом и свободном графическом Git-клиенте. Для Windows и Mac.
|
||||||
* [tig](https://jonas.github.io/tig/) - консольный текстовый интерфейс для Git
|
- [Tower](https://www.git-tower.com/) - графический Git-клиент для OS X (платный)
|
||||||
* [Magit](https://magit.vc/) - интерфейс для Git, реализованный в виде модуля Emacs.
|
- [tig](https://jonas.github.io/tig/) - консольный текстовый интерфейс для Git
|
||||||
* [GitExtensions](https://github.com/gitextensions/gitextensions) - расширение оболочки, плагин для Visual Studio 2010-2015 и автономный инструмент для управления репозиториями Git.
|
- [Magit](https://magit.vc/) - интерфейс для Git, реализованный в виде модуля Emacs.
|
||||||
* [Fork](https://git-fork.com/) - быстрый и дружелюбный Git-клиент для Mac (бета)
|
- [GitExtensions](https://github.com/gitextensions/gitextensions) - расширение оболочки, плагин для Visual Studio 2010-2015 и автономный инструмент для управления репозиториями Git.
|
||||||
* [gmaster](https://gmaster.io/) - Git-клиент для Windows с трехсторонним слиянием, обнаружением рефакторинга, семантическим сравнением и слиянием (бета)
|
- [Fork](https://git-fork.com/) - быстрый и дружелюбный Git-клиент для Mac (бета)
|
||||||
* [gitk](https://git-scm.com/docs/gitk) - Git-клиент под Linux для просмотра состояния репозитория.
|
- [gmaster](https://gmaster.io/) - Git-клиент для Windows с трехсторонним слиянием, обнаружением рефакторинга, семантическим сравнением и слиянием (бета)
|
||||||
|
- [gitk](https://git-scm.com/docs/gitk) - Git-клиент под Linux для просмотра состояния репозитория.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user