GIT Flashcards

1
Q

git merge

A
  1. git merge – команда, выполняющая слияние веток.
  2. Иногда во время слияния возникают конфликты, в этом случае действовать нужно так:
    2.1. Разрешить конфликт.
    2.2. После устранения конфликта нужно добавить изменения в индекс командой git add <имя>.
    2.3. Выполнить git merge --continue, чтобы сообщить Git, что можно продолжать слияние, либо просто сделать коммит самостоятельно.
    2.4. Не забывать, что в любой момент можно выполнить git merge --abort. Эта команда остановит слияние и вернет все, как было.</имя>
  3. Разрешить конфликт можно двумя способами:
    3.1. Выбрать файл с целевой ветки или со сливаемой ветки, выполнив, соответственно, git checkout –ours <имя> или git checkout --theirs <имя>
    3.2. Открыть сам файл и отредактировать его вручную, записав туда что угодно.</имя></имя>
  4. В сообщении merge-коммита следует указывать полезную информацию: какие ветки вы слили, по какому принципу вы сливали файлы, если были конфликты, какие изменения внесли и т.д.
  5. В случае, если вы работаете с большим репозиторием, коммиты в который делают много разработчиков, при возникновении конфликтов очень полезно будет посмотреть на базу слияния. Она поможет разобраться, как должен выглядеть слитый файл.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

git rebase

A

git rebase – команда, перемещающая все коммиты: от общего коммита двух веток до последнего коммита текущей ветки на вершину переданной ветки.
Такое перемещение может быть необходимо, чтобы стало возможным слияние в fast-forward режиме.

Команда git rebase в системе контроля версий Git используется для перемещения коммитов из одной ветки в другую с сохранением истории изменений. Команда rebase позволяет создать одну линейную историю изменений, перемещая коммиты текущей ветки наверх ветки, на которую производится перебазирование (обычно на основную ветку).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

rebase vs merge

A
  • Обе команды делают одно и тоже - сливают ветки
  • Команда merge может создавать мердж коммит при слиянии(в случае не фаст форвард), команда рибэйс мердж коммита не создает
  • Команда мердж безопасней чем ребэйс, есть отдельный коммит отображающий слияние
  • Достоинство мердж - достоверная и полная история коммитов
  • Достоинство Рибэйс лаконичная история без лишних коммитов
  • Если в ветке долго велась разработкаи производилось мног оизменений лучше использовать мердж
  • Если ветка была недлолгой и производилось мало изменений можно использовать рибэйс
  • Используйте мердж если вас не просят использовать рибэйс
  • Рибэйс небезопасно использовать в публичных ветках(если вы ведете разработку вместе с кем-то)

Команды merge и rebase действительно выполняют слияние веток, но при этом работают по-разному. Команда merge создает новый коммит-слияние, который содержит изменения из обеих веток, а команда rebase переносит коммиты из одной ветки в другую таким образом, что история коммитов выглядит линейно.

Команда merge может быть безопаснее, чем rebase, в тех случаях, когда необходимо сохранить полную историю коммитов. Однако в некоторых ситуациях, когда нужно избежать “слияния” несвязанных веток или навести порядок в истории коммитов, команда rebase может быть предпочтительнее.

Также следует учитывать, что использование команды rebase может привести к изменению идентификаторов коммитов и требует осторожности при работе с общей веткой.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

rebase vs merge

A
  • Обе команды делают одно и тоже - сливают ветки
  • Команда merge может создавать мердж коммит при слиянии(в случае не фаст форвард), команда рибэйс мердж коммита не создает
  • Команда мердж безопасней чем ребэйс, есть отдельный коммит отображающий слияние
  • Достоинство мердж - достоверная и полная история коммитов
  • Достоинство Рибэйс лаконичная история без лишних коммитов
  • Если в ветке долго велась разработкаи производилось мног оизменений лучше использовать мердж
  • Если ветка была недлолгой и производилось мало изменений можно использовать рибэйс
  • Используйте мердж если вас не просят использовать рибэйс
  • Рибэйс небезопасно использовать в публичных ветках(если вы ведете разработку вместе с кем-то)

Команды merge и rebase действительно выполняют слияние веток, но при этом работают по-разному. Команда merge создает новый коммит-слияние, который содержит изменения из обеих веток, а команда rebase переносит коммиты из одной ветки в другую таким образом, что история коммитов выглядит линейно.

Команда merge может быть безопаснее, чем rebase, в тех случаях, когда необходимо сохранить полную историю коммитов. Однако в некоторых ситуациях, когда нужно избежать “слияния” несвязанных веток или навести порядок в истории коммитов, команда rebase может быть предпочтительнее.

Также следует учитывать, что использование команды rebase может привести к изменению идентификаторов коммитов и требует осторожности при работе с общей веткой.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

cherry pick

A

используется тогда, когда нам надо взять(скопировать) один или несколько коммитов из другой ветки в нашу ветку.

мол отобрать только хорошие вишенки(хорошие коммиты)

Команда git cherry-pick в Git позволяет применять выбранный коммит из одной ветки к другой ветке, создавая новый коммит с изменениями, внесенными в выбранный коммит.

Кроме того команда черри пик позволяет взять изменения и в незакомичченом виде перенести в необходимое место. Можно с ними поработать и лишь только потом закоммитить в случае неободимости.

Команда выполняется следующим образом:

  1. Выполняется команда git cherry-pick <commit>, где <commit> - это SHA-1 хэш выбранного коммита.</commit></commit>
  2. Git ищет выбранный коммит и применяет его изменения к текущей ветке, создавая новый коммит с этими изменениями.
  3. Новый коммит содержит только изменения, внесенные в выбранный коммит, и не содержит других изменений из исходной ветки.
  4. После применения коммита, можно отправить изменения на удаленный сервер, используя команду git push.

после копирования хэш скопированных коммитов изменяется

Команда git cherry-pick полезна в случае, когда нужно применить изменения из одного коммита к другой ветке, не затрагивая другие коммиты в этой ветке. Она позволяет упростить процесс внесения изменений и переноса кода между ветками, что может быть особенно полезно при работе с несколькими фичами или бранчами.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

git commit –amend

A

Команда git commit –amend позволяет изменить последний коммит в Git. Когда вы выполняете команду git commit, Git создает новый коммит, который содержит изменения, которые были добавлены в индекс (с помощью git add). Однако, иногда может случиться так, что вы забыли добавить какие-то изменения в индекс или вы хотите изменить сообщение коммита. В таком случае можно использовать команду git commit –amend.

Дополняет последний коммит, добавляя в него свежие измения, так же меняет сообщение последнего коммита, при этом новый коммит не создается.

Когда вы выполните команду git commit –amend, Git откроет редактор, где вы сможете изменить сообщение коммита. Также, если вы добавите какие-то изменения в индекс с помощью git add перед выполнением git commit –amend, то эти изменения будут добавлены в последний коммит.

Пример использования команды git commit –amend:

# Добавляем изменения в индекс
$ git add .

Выполняем коммит, но забыли добавить файл README.md в индекс
$ git commit -m "Добавили файлы проекта"

Добавляем файл README.md в индекс
$ git add README.md

Исправляем сообщение коммита
$ git commit --amend -m "Добавили файлы проекта, включая README.md"
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

основное назначение интерактивного rebase

A

Основное назначение интерактивного rebase в Git - это дать возможность пользователю изменить историю коммитов, чтобы улучшить их качество, очистить историю коммитов от ненужных или неудачных изменений, а также упорядочить историю коммитов для более понятного и логичного чтения.

Интерактивный rebase позволяет пользователю изменять коммиты в выбранной ветке путем перебазирования этой ветки на другую ветку или коммит. При этом пользователю предоставляется возможность изменить порядок, изменить сообщения коммитов, объединить коммиты или удалить ненужные коммиты. Это позволяет устранить ошибки, которые были допущены в прошлом, и улучшить качество коммитов, что облегчает работу с историей репозитория.

Использование интерактивного rebase может быть полезным при работе в команде, когда несколько человек работают в одном репозитории, а также при работе над большими проектами, где история коммитов может быть длинной и запутанной.

  • поменять коммиты местами
  • поменять название коммита/коммитов
  • объединить два коммита в один
  • добавить изменения в существующий комит
  • разделить коммит на несколько коммитов**

Механизм работы интерактивного rebase в Git предполагает следующие шаги:

  1. Выполняется команда git rebase -i <commit>, где <commit> - это коммит, с которого начинается перебазирование ветки.</commit></commit>
  2. Открывается интерактивный режим, в котором пользователю предоставляется список коммитов в выбранной ветке, начиная с указанного коммита.
  3. Пользователь может изменять порядок коммитов, изменять сообщения коммитов, объединять коммиты или удалять ненужные коммиты.
  4. После внесения всех необходимых изменений, пользователь сохраняет файл и закрывает редактор.
  5. Git выполняет перебазирование ветки на указанный коммит с учетом всех изменений, внесенных пользователем.
  6. Ветка теперь содержит новую историю коммитов, отражающую все внесенные изменения.

Интерактивный rebase в Git позволяет изменять историю коммитов в выбранной ветке, делая ее более чистой, понятной и легко читаемой. Кроме того, он позволяет исправлять ошибки, которые были допущены ранее, и улучшать качество коммитов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Важные команды GIT

A

git init: Создает новый репозиторий Git в текущем каталоге.

git status: Показывает состояние репозитория Git и список измененных файлов.

git log: Отображает список всех коммитов в репозитории Git.

git diff: Показывает различия между файлами в рабочей директории и последним коммитом.

git reset: Отменяет изменения в файле или переносит HEAD на указанный коммит.

git checkout: Переключается на другую ветку или восстанавливает файлы из предыдущего коммита.

git commit –amend: Изменяет последний коммит, добавляя новые изменения.

git clean: Удаляет ненужные файлы из рабочей директории.

git push: Отправляет изменения в удаленный репозиторий.

git pull: Получает изменения из удаленного репозитория и объединяет их с локальной веткой.

git ls-files: Показывает список файлов в текущем репозитории.

git clone: Клонирует удаленный репозиторий в локальную директорию.

git branch: Показывает список веток и создает новые ветки.

git merge: Объединяет изменения из одной ветки в другую.

git fetch: Получает изменения из удаленного репозитория, но не объединяет их с локальной веткой.

git remote show “repname”: Показывает информацию о удаленном репозитории с именем “repname”.

git rebase: Перебазирует текущую ветку на другую ветку или коммит, переносит коммиты из одной ветки в другую, и изменяет историю коммитов.
git show отображает информацию о последнем коммите по умолчанию, но вы можете указать идентификатор коммита или имя ветки для отображения информации о конкретном коммите.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly