Git — одна из самых распространенных систем в современном программировании. Она используется почти всеми компаниями, которые разрабатывают и продают профессиональное программное обеспечение, поскольку с ее помощью отслеживать изменения кода намного проще.
Содержание
При использовании Git вы просто не можете пропустить команды Git Merge и Commit. Git Merge позволяет присоединить код, над которым вы работали, ко всей ветке. За ней обычно следует команда Commit для сохранения изменений.
Но можно ли использовать Merge без команды Commit? Эта статья даст вам ответ.
ПРИМЕЧАНИЕ : Если вы хотите следовать этому руководству, вы должны иметь хоть какой-то опыт в программировании и должны быть знакомы с основными элементами Git.
Первые вещи
Перед тем, как перейти к основной части статьи, давайте проясним ключевые понятия, которые нам понадобятся для этого руководства. Мы начнем с Git Merge.
Git Merge — это команда, которая объединяет две или более истории разработки вместе. Другими словами, эта команда включает изменения из новых коммитов в ветку, которая уже хранится в вашем репозитории Git.
Основной синтаксис, который вы можете использовать для этой команды, выглядит следующим образом:
git merge [-n] [-stat] [-no-commit] [-squash]
[-s ] [-X ]
[-[no-]rerere-autoupdate] [-m ] …
git merge HEAD …
git merge -abort
Команда Git Merge в основном используется через Git Pull, которая является другой командой Git, включающей изменения из другого репозитория. Вы можете выполнить команду вручную, когда вам нужно объединить изменения из одной ветки в другую.
Основной синтаксис, чаще всего используемый для этой команды, выглядит следующим образом:
git commit -m //задает сообщение о фиксации
git commit -a //включает все измененные файлы в текущий коммит
git commit -amend //переписывает последний коммит
С другой стороны, команда Git Commit служит для сохранения всех сделанных вами изменений в локальном репозитории.
Мы проиллюстрируем это на примере.
Допустим, вы создали новую функцию ветвления, которая называется просто «new-feature». Эта функция будет ответвлена от ветки master. Затем вы создадите коммит с именем «Завершено создание новой функции». В то же самое время, когда вы поставили свой коммит, ваш коллега также поставил свой коммит под названием «Функция коллеги».
Если вы затем создадите запрос на слияние с помощью вышеупомянутого метода Pull, и ваша ветка будет объединена, вы сможете увидеть новый коммит слияния под названием «Merge Branch new-feature» в вашей консоли.
Поскольку вы работаете на GitHub, например, вы проверите его историю коммитов. Пользовательский интерфейс покажет вам все коммиты, упорядоченные по времени их публикации. Итак, все линейно.
Это означает, что если несколько человек объединят несколько веток проекта, они могут перепутаться и запутаться. Именно поэтому некоторые команды разработчиков всеми способами избегают использования слияния и pull requests.
Чтобы избежать смешения веток и потери важных частей вашего проекта, рекомендуется, чтобы все делали перенос непосредственно в главную ветку. Это позволит сохранить линейную историю, а ветви останутся уникальными. Но можно ли вести разработку в ветках и объединять их вместе без использования команды Commit?
Использование Git Merge без Commit
Если вы наберете в командной строке команду man рядом с Git Merge ( man git merge ), вы откроете страницу HELP для этой конкретной команды. Там вы можете прочитать документацию по ней и все дополнительные аргументы, которые вы можете использовать для дальнейшей настройки ее работы.
Судя по документации, Git Merge по умолчанию вызывает команду Commit. Commit имеет атрибут autocommit в Git Merge, который автоматически включает его сразу после выполнения Merge.
На той же странице HELP вы также увидите следующее сообщение:
С параметром -no-commit выполните слияние, но сделайте вид, что слияние не удалось, и не выполняйте autocommit,
чтобы дать пользователю шанс проверить и подправить результат слияния до
завершения.
Это означает, что вы можете добавить дополнительный аргумент к команде Git Merge (-no commit), чтобы остановить команду от автоматической активации Git Commit.
Ваша строка командной строки должна выглядеть примерно так:
$> ~/git/testrepo$ git merge -no-commit v1.0
Конечно, в зависимости от вашего имени пользователя и проекта, левая часть команды будет отличаться, но все, что справа от «Git Merge», должно остаться неизменным.
Обычная проблема, которая может помешать этому типу Git Merge, называется Fast Forward. Проверьте вывод после нажатия Enter в предыдущей команде, и если в сообщении написано Fast Forward, измените командную строку на следующую: git merge v1.0 -no-commit -no-ff
Аргумент -no-ff предотвращает Fast Forwarding и выполняет команду так, как вам нужно.
Удачи вам в будущих проектах
Изучение Git требует времени, но основы не так уж сложны. Если вы хотите повысить свой уровень владения Git’ом, вы можете начать искать способы упростить свою работу и сэкономить время. Сокращение команды Commit — хорошее место для начала.
Если вам нужна дополнительная информация о некоторых командах или аргументах, ознакомьтесь с полной документацией GitHub’а .
Удалось ли вам выполнить Git Merge без фиксации? Получили ли вы сообщение Fast Forward? Расскажите нам об этом в комментариях ниже.
YouTube видео: Как выполнить слияние без коммита в Git
Вопросы и ответы по теме: “Как выполнить слияние без коммита в Git”
Как сделать слияние в git?
Выполнение слиянияДля этого выполните команду git merge <название ветки> , где <название ветки> — название ветки, которая будет объединена с принимающей.
Как сделать запрос на слияние веток git?
Если вы хотите сделать запрос на слияние применяемым, то следует добавить исходный репозиторий как новый удалённый, слить изменения из его основной ветки в вашу тематическую, если имеются исправить все проблемы и, наконец, отправить все изменения в ту ветку, на основании которой был открыт запрос на слияние.
Как объединить две ветки в GitHub?
Слияние другой ветви с вашей ветвью проектаЩелкните Выбрать ветвь для слияния с BRANCH. 1. Щелкните ветвь, которую нужно объединить в текущую ветвь, а затем щелкните Объединить ветвь в ветвь. Примечание: При наличии конфликтов слияния GitHub Desktop отобразит предупреждение над кнопкой Объединить ветвь в ветвь .
Как слить одну ветку в другую гит?
Команда ветки Git«Git branch new_branch» создаст новую ветку в вашем текущем репозитории Git. Вы должны знать, что когда git создает новую ветку, он не создает новый набор фиксации для представления этой новой ветки.
Как Смержить не все коммиты?
можно воспользоваться командой merge с опцией –squash . при этом коммитов создано не будет, но в индексе будут сохранены все изменения, которые были произведены в ветке dev (убедиться можно командой $ git status ).
Как выполняется слияние документов?
При слиянии данные из первой строки файла данных замещают поля в основном документе, образуя первый составной документ. Данные второй строки файла данных замещают поля, образуя второй составной документ, и т. д. Перед вставкой поля в основном документе необходимо выполнить щелчок в месте, где необходимо вставить поле.