Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Запрос слияния gitlab из командной строки

Автор вопроса: Bob5421Ответов: 2

Я работаю с gitlab.

Во-первых, я не нашел на gitlab функции "Pull Request". Я полагаю, это называется "Merge Request"?

Вот что я хочу понять:

Предположим, у нас есть проект под названием project1. Этот проект является общедоступным проектом gitlab, написанным пользователем user1.

Теперь предположим, что у нас есть участник (user2), который хочет что-то изменить в project1. Вот шаги, которые должен сделать user2:

  1. Вилка project1 в веб-интерфейсе gitlab (кнопка Fork)
  2. Клонируйте разветвленный проект на своем локальном компьютере.
  3. создать ветку (brtest)
  4. Записать или изменить файлы исходного кода
  5. зафиксировать изменения
  6. протолкните brtest в разветвленный проект
  7. В веб-интерфейсе gitlab запросите запрос на слияние

Пользователь User1 увидит новый запрос на слияние, открытый в его веб-интерфейсе gitlab. Предположим, что user1 согласен с изменениями, внесенными пользователем user2.

Если user1 нажимает кнопку "Объединить", я вижу ссылку, которая объясняет мне, какие команды интерфейса командной строки мне следует вводить. Здесь я хочу кое-что понять.

Вот команды:

git fetch git@gitlabserverofuser2/user2/project1.git brtest
git checkout -b localbrtest FETCH_HEAD
git checkout master
git merge --no-ff localbrtest
git push origin master

Я понял, что FETCH_HEAD представляет то, что выбирается в первой строке. Мой первый вопрос: что мне вводить вместо FETCH_HEAD? Я пытался ввести это, но это не сработало:

 git checkout -b localbrtest git@gitlabserverofuser2/user2/project1.git/brtest

Я также набрал

git branch
git branch -a
git branch -r

Я ничего не вижу об удаленной самой яркой ветке. Я знаю, что это будет работать с ключевым словом FETCH_HEAD. Но, чтобы понять, я хочу знать "значение" FETCH_HEAD.

Следующий вопрос, почему они не ставят параметр без перемотки вперед. Опасно ли пропускать этот параметр и в чем риск?

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

Спасибо

  • FETCH_HEAD - это встроенный псевдоним git для фиксации. SLaks 14.06.2018
  • Спасибо, но как я могу прочитать его значение? Bob5421 14.06.2018
  • Используйте 1_. SLaks 15.06.2018
  • нет, это не дает мне значения Bob5421 15.06.2018

gitgitlabpull-requestgit-merge

Ответы

Ответ 1 · lyuboslav kanev

FETCH_HEAD - это указатель на начало вашей истории git. Самое последнее состояние.

Ответ 2 · Major

Что касается вашего второго вопроса, вы получите конфликт только в том случае, если две ветки изменили один и тот же файл в одном и том же месте. Это конфликт, потому что git не знает, какие изменения вы действительно хотите. Если вы не внесли никаких изменений, вызывающих конфликт, git сообщит вам об этом, и тогда вам нужно будет использовать программу слияния, чтобы выбрать изменения, которые вы хотите сохранить.

Вероятно, вы не видите конфликта, потому что вы работаете над разными частями, и конфликта не существует.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы