На заметку Шпаргалище по гиту


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 082
Репутация
8 199
Всем привет!

Часто приходится пользоваться гадом гитом, но т.к. у меня проблемы с памятью, часто составляю себе шпрагалки, вот одна из них... Dmeh-Smeh-Smeh!!! Dmeh-Smeh-Smeh!!! Dmeh-Smeh-Smeh!!!

Тут не будет всяких терминологий и т.д., а просто команды, что делать и как.

Создаем ветку:
Чтобы создать новую ветку в Git необходимо выполнить команду (вместо mybranch укажите название вашей новой ветки):
git branch mybranch

После выполнения команды, будет создана новая ветка с именем, которое вы указали. Обратите внимание, что вы все еще находитесь в текущей ветке.

Переключаемся на новую ветку:
Чтобы переключиться на новую ветку, выполните команду:

git checkout mybranch

Создаем и переключаемся одной командой:
Чтобы создать ветку и сразу же на нее переключиться, используется команда checkout с ключом -b:

git checkout -b mybranch

Удаление локальной ветки:
Чтобы удалить локальную ветку в Git нужно выполнить команду (вместо mybranch необходимо поставить название ветки, которую вы хотите удалить):

git branch -d mybranch
Обратите внимание на то, что ветка, которую вы удаляете, не должна быть вашей текущей веткой, в которой вы работаете, иначе отобразится ошибка вида:
error: Cannot delete branch ’mybranch’ checked out at ’/path/to
Поэтому, если вам нужно удалить текущую ветку, то сначала нужно переключиться на какую-либо другую ветку, а только потом выполнять удаление.

Если вдруг возникает ошибка: The branch ’mybranch’ is not fully merged. If you are sure you want to delete it и вы по прежнему хотите удалить ветку, то для принудительного удаления ветки можно воспользоваться опцией -D:

git branch -D mybranch

Удаление удаленной ветки:
Чтобы удалить удаленную (remote) ветку используется команда (вместо origin и mybranch необходимо поставить свои данные):

git push origin --delete mybranch
Вместо --delete можно просто писать -d:

git push origin -d mybranch

Залить текущую ветку:
git push --set-upstream origin mybranch

История в виде дерева:
git log --graph --color-words --color --source --decorate --all
git log --graph --oneline --all

Список локальных веток:
Чтобы вывести список локальных веток используется команда:

git branch

Список удаленных веток:
Чтобы показать удаленные (remote) ветки используется ключ -r:

git branch -r

Перед тем, как выполнять данную команду, можно сначала обновить удаленные ветки у себя в репозитории, для этого используется команда:

git fetch

Просмотреть что измененно в комитах:
git log -p

Чтобы посмотреть историю изменения одного файла, надо дать команду: git log -p имя_файла. Будут выведены все изменения в виде diff синтаксиса.

Переход на удаленную ветку:
git checkout -b <название ветки> origin/<название ветки>

Изменить текущий коммит:
git commit --amend
ВМЕСТО нового коммита изменяет ПОСЛЕДНИЙ, кроме этого позволяет изменить сообщение последнего коммита. Если коммит уже был отправлен в удалённый репозиторий, то требуется его заменить командой:
git push --force-with-lease

Краткая инструкция по git squash:
Общее описание происходящего: данная операция объединяет несколько коммитов в один.

Последовательность действий:
1) `git rebase -i HEAD~X
`где X - количество коммитов, которые вы хотите объеденить

2) Появится окно (nano) со списком коммитов, в котором каждый коммит помечен словом pick, которое означает оставить коммит как есть без изменений.

3) Необходимо заменить слово pick на букву 's' у тех коммитов которые вы хотите объединить с предыдущим, КРОМЕ первого коммита.

4) Сохранить и выйти (Ctrl+o, Enter, Ctrl+x)

5) заменить ветку на удалённом репозитории
git push --force-with-lease

Удалить последний коммит:
git reset HEAD~

Как сделать rebase:

0) /* ДЕЛАЕМ БЭКАП, ЕСЛИ НЕ УВЕРЕНЫ В УСПЕШНОСТИ ПОСЛЕДУЮЩИХ ДЕЙСТВИЙ */
1) git fetch
2) git checkout <ВАША ВЕТКА>
3) git pull --rebase
4) git status
5) /* убедиться в остутствии изменений вне индекса (см. пояснение) */
6) git rebase origin/ваша ветка
7) /* если кофликтов нет, то переходим к пункту 13 */
8) /* исправляем конфликты */
9) /* проверяем что всё собирается, и работает */
10) git add .
11) git rebase --continue
12) /* возврат к пункту 7 */
13) gitk
14) /* Точка невозврата: после её прохождения восстановление из бэкапа не поможет! */
15) git push --force-with-lease

Пояснение:
1) синхронизация с удалённым репозиторием (самя безопасная команда, которая точно ничего не поломает)
2) переход к ветке, для которой хотим сделать ребейз (можете пропустить, если вы уже находитесь на нужной ветке)
3) проверка обновлений для ветки (если никто кроме вас с этой веткой не работает, то всё должно пройти без конфликтов)
4) вывод информации о текущем состоянии локального репозитория (для шага 5)
5) перед перебазированием убедитесь в осутствии незакомиченных изменений, иначе ребейз может не пройти (git об этом напишет и rebase не начнётся). Если такие изменения есть, то либо закомитьте их, либо застеште (git stash).
6) инициируем процедуру rebase
7) если конфликты есть, вы об этом узнаете
8) исправляем код, или с чем вы там работаете
9) ! репозиторий находится в состоянии промежуточного коммита, поэтому вы можете не увидеть своих самых последних изменений - это НОРМАЛЬНО
10) добавляет ваши изменения в индекс коммита, в котором произошёл конфликт (ПРОВЕРЬТЕ чтобы в индекс вошли только нужые файлы, командой git status)
11) возобновление процедуры rebase после исправления конфликта
12) запуск программы для проверки истории коммитов и их содержимого
13) обновляем ветку в удалённом репозитории

Перенести коммит в свою локальную ветку:
git cherry-pick хеш_нужного_коммита

Вот такие-вот мои команды, которые я обычно использую в своей работе...

Есть ещё список команд линукса, но не буду выкладывать, что-бы не позориться...Отдыхай!!!
 
Последнее редактирование модератором:
Верх Низ