Убери перепутанную ветку с git - PullRequest
0 голосов
/ 16 апреля 2020

Кажется, я запутал ветку разработки небольшого проекта до неузнаваемости. Чего я хотел бы достичь сейчас, так это сказать git следующее: эй git. Вот ветвь под названием X. А теперь я нахожусь в ветке под названием Y, которая основана на X. Пожалуйста, посмотрите, в чем различия, зафиксируйте их в одном коммите, а затем обновите источник.

Справочная информация: проект находится в хранилище gitlab. Существует ветка разработки, называемая разработкой (соответственно), и я изменяю ее (ветвь, скажем, january_dev). Теперь, из-за неудачных обстоятельств, которые лучше всего описать: «Я не имею ни малейшего представления о том, что я делаю», я испортил историю этой отрасли.

Некоторое время назад go я перебазировал свой january_dev на разработку, что означает, что в настоящее время все ветки разработки, кроме одного, также находятся в моей ветке.

В настоящее время предпринимаются попытки перебазирование ветки в процессе разработки приводит к воспроизведению всей истории коммитов january_dev, и это становится беспорядком, так как я много работаю, перебирая концепции между понятиями et c. Так что, в принципе, я не чувствую уверенности в разрешении конфликтов, поскольку я go. Все, что я хочу, это иметь статус-кво, перебазированный на «разработку», который, по идее, должен быть довольно простым, поскольку в файле есть только две строки кода, которые я даже не коснулся, и которые go должны быть от разработки в мою ветку.

То, что я знаю, что я мог бы сделать, и я думаю, что это будет работать, будет следующим:

  1. Создать новую ветку на основе ветви разработки. Назовите его january_dev2: git checkout -b january_dev2 && git push
  2. Скопируйте файлы, над которыми я работал, из january_dev. Их всего пара.
  3. git commit -a -m 'a new beginning'
  4. git push
  5. Переименуйте january_dev2 в january_dev: git branch -m january_dev2 january_dev ; git push origin january_dev ; git push origin -u january_dev ; git push origin --delete january_dev2

I затем потерял бы всю историю моих коммитов, но мне все равно и они не нужны.

Что вы думаете?

1 Ответ

1 голос
/ 16 апреля 2020

Вот ветвь с именем X. А теперь я нахожусь в ветке под названием Y, которая основана на X. Пожалуйста, посмотрите, в чем различия, зафиксируйте их в одном коммите, а затем обновите источник. .

  1. git switch Y - переключиться на ветку, которую вы хотите сохранить (вы это уже сделали, но на всякий случай).
  2. git switch -c tmp - создать новая временная ветвь с именем tmp на всякий случай.
  3. git reset X - укажите вашей ветке tmp тот же коммит, что и X, сохраняя при этом рабочее дерево из ветки Y.
  4. git add . && git commit - для записи всех изменений между X и Y в одном коммите.

Так что теперь ваши ветви X и Y остаются в том же состоянии, что и раньше , но, кроме того, у вас есть новая ветвь с именем tmp, которая по существу X + одна фиксация, которая содержит разницу между X и Y.

Это не ясно из вашего описания из вашего описания, что вы хотите, чтобы Pu sh, где, но в зависимости от теперь вы можете сделать либо git branch -f X, либо git branch -f Y, чтобы соответственно изменить ветку X или Y на tmp. И тогда вы просто switch к нему как всегда и push, куда хотите. После того, как вы закончите, вы можете git branch -D tmp.

...