summaryrefslogtreecommitdiff
path: root/GIT_new.md
blob: b93ffa167c394484b5ceeed606a905b808effa71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
```sh
#==========================================
# Полный список подкоманд:
git help --all

# Установка редактора по умолчанию:
export GIT_EDITOR=vim

# Настройка автора фиксации:
git config --global user.name "my_name"
git config --global user.email "my_name@mail.com"

-add # добавляет файлы в индекс
-bisect # выполняет бинарный поиск ошибки по истории фиксаций
-branch # выводит, создает, или удаляет ветки
-checkout # проверяет и переключает на ветку
-clone # клонирует репозиторий в новый каталог
-commit # записывает изменения в каталог (фиксация)
-diff # показывает изменения между фиксациями, рабочими деревьями...
-fetch # загружает объекты и ссылки из другого репозитория
-grep # выводит строки, соответствующие шаблону
-init # создает пустой репозиторий git, или переинициализирует существующий
-log # показывает журналы фиксации
-merge # объединяет две, или больше истории разработки
-mv # перемещает, или переименовывает файл, каталог, или символическую ссылку
-pull # получает изменения из удаленного репозитория и объединяет их с локальным, или локальной веткой
-push # загружет изменения из локального репозитория в удаленный
-rebase # строит ровную линию фиксаций
-reset # сбрасывает текущий HEAD в указанное состояние
-rm # удаляет файлы из рабочего дерева и из индекса
-show # показывает различные типы объектов
-status # показывает состояние рабочего дерева
-tag # создает, выводит, удаляет, или проверяет тег объекта, подписанного с GPG



#==========================================
# Создание веток:
git branch name_branch [начальная фиксация]

# Вывод имен веток в репозитории:
git branch
			-r # удаленные ветки
			-a # все ветки

# Вывод детальной информации:
git show-branch

# Переключение на другую ветку:
git checkout name_branch

# Объединение изменений в другую ветку:
git checkout -m dev

# Создание новой ветки и переключение на нее:
git checkout -b dev_new

#==========================================
# Использование UNIX команды diff:
diff -u cat-1 cat-2

# Разница между рабочим каталогом и индексом:
git diff

# Разница между рабочим каталогом и указанной фиксацией:
git diff фиксация

# Разница между подготовленными в индексе изиенениями и заданной фиксацией:
git diff --cached фиксация

#==========================================
# Исследование конфликтов слияния:
git merge alt

# Когда есть кофликты, рабочая копия каждого проблемного файла добавляется маркерами слияния - маркеры показывают две возможные версии конфликтного участка файла: нужно просто выбрать одну из фраз, удалить маркеры конфликта и выполнить команды:
git add
git commit

# Отмена, или перезапуск слияния:
# Перед последним git commit: 
# команда восстановит рабочий каталог и индекс в состояние предшествующее git merge:
git reset --hard HEAD

# После завершения слияния (уже есть новая фиксация):
git reset --hard ORIG_HEAD
# перед началом слияния GIT созраняет оригинальную ветку HEAD в ссылке ORIG_HEAD, чтобы можно было выполнить откат слияния

# Вернуться к исходному состоянию конфликта, чтобы разрешить его снова:
git checkout -m

#==========================================
# Применение изменений представленных =фиксацией= на текущей ветке:
# не изменяет существующую историю в репозитории, вместо этого она добавляет фиксацию в историю:
git cherry-pick фиксация
# обычно используется чтобы представить определенные фиксации из одной ветки в репозитории в другую ветку
```
![[Снимок экрана 2025-02-02 в 18.06.09.png]]

```sh
# Отменяет фиксацию использую хэш этой фиксации
# не изменяет существующую историю в репозитории
#  добавляет в историю новую фиксацию:
git revert фиксация
```

![[Снимок экрана 2025-02-02 в 18.13.01.png]]
```sh
#==========================================
# Изменение последней фиксации:
git commit --amend

# Изменение последовательности фиксаций:
git rebase
# требует, как минимум, имени другой ветки, в которую будут перемещены фиксации, по умолчанию перебазируются фиксации из текущей ветки, которых еще нет в целевой ветке
# типично: сохранить серию фиксаций из указанной ветки на последнюю фиксацию ветки =master=
```
![[Снимок экрана 2025-02-02 в 18.29.43.png]]
![[Снимок экрана 2025-02-02 в 18.30.02.png]]
```sh
# использование git rebase - портирование, ветка topic была портирована в ветку master

#==========================================
# Если нужно сохранить все и заняться чем-то другим:
git stash save "работаю над текущим проектом"
# занимаемся чем-то другим
.....
git commit -a -m "что-то другое"
git stash pop
# выполнить можно только в чистый рабочий каталог !
#==========================================
# Запись изменений в головы веток
# показывает транзакции только для одной ссылки за один раз
git reflog show

# журнал изменений ветки fred:
git reflog fred
# каждая строка-это отдельная транзакция из истории ссылки, нчиная с самого последнего изменения и вплоть до самого первого

#==========================================
# Создание "чистого" (bare) репозитория:
git init --bare

# Преобразовать репозиторий в другой чистый клон:
git clone --bare vlapa@178.20.46.157:~/git/name new_name.git

# добавить удаленную конфигурацию
git remote add origin /путь/к/репозиторию
# команда git remote добавила новый раздел remote с названием origin

git push origin master
# изменения ветки master отправлены удаленному репозиторию origin

#==========================================
# Посмотреть список веток в своем репозитории:
git branch -a

#==========================================
# Загрузка обновлений:
git pull # состоит из двух команд:
		-git fetch 
		-git merge (rebase) - по умолчанию = merge
		
#==========================================
```