В последнее время мой босс решил опробовать группу аутсорсинга «для увеличения емкости», поскольку мы модифицируем существующее приложение для добавления новых функций. Несмотря на мою обеспокоенность тем, что группа, которую он выбрал, по-видимому, не очень хорошо говорит и не задавала достаточно вопросов, чтобы по-настоящему понять и быть эффективными, мы все равно пошли с ними.Git - Перемещение нажатых переходов в другую ветвь
Мы установили их для совместной работы в нашем репозитории Git (размещенном на GitHub). Мы создали ветку только для них (TheOutsourcedBranch, мы ее будем называть) и попросили, чтобы они выполнили всю свою работу в этой ветке.
Кроме того, мы попросили, чтобы они нажимали свои коммиты в конце каждого дня, чтобы мы могли получить приличное представление о том, как быстро они работают и (что еще важнее), насколько хорош их код.
Сегодня они толкнули в первый раз. Пять коммитов, все они у мастера. Я пытаюсь понять, как переместить свои коммиты от мастера в TheOutsourcedBranch, не теряя при этом работу, которую они сделали (хотя, по внешнему виду, нам все равно придется выбросить ее).
Оранжевые точки являются их фиксаций, серые точки мои.
Я знаю, что есть вопросы о перезагрузке (и это может быть то, что мне нужно сделать здесь), но мне сложно определить, какие из них относятся к моему конкретному делу. И в случае, если это имеет значение, группа аутсорсинга и я - единственные люди, которые действительно используют репо прямо сейчас.
Заранее благодарен!
Edit: я, возможно, нашел то, что я ищу: Move the most recent commit(s) to a new branch with Git
Я хотел бы проверить свое понимание, хотя. Локально я создаю ветку от мастера (TheOutsourcedBranch), который будет содержать все A-H. Затем я возвращаю мастер обратно к C. Мастер теперь будет содержать A-C.
Предполагая, что это правильно, это было бы хорошо для меня (локально). Но что мне нужно сделать, чтобы «заставить» удаленный репозиторий (GitHub) принять мое локальное представление о том, как все происходит и отбрасывает свою версию истории?
После того, как это произошло, я думаю, что смогу переработать этот вопрос, чтобы сделать его более обобщенным/информативным и вырезать некоторый пух - иначе это, вероятно, хороший кандидат на удаление, я бы предположил.
Просто хотел поделиться тем, что это решило ту же проблему для меня - но мне пришлось изменить второй шаг на 'git reset --hard $ SHA1_OF_C' (удаление ссылки на master); до этого я становился «фатальным: не могу выполнить жесткий сброс с помощью путей». Возможно, это изменение в недавней версии git? –
После того, как я перезагрузился - мой локальный репозиторий позади, и из-за этого из-за отказа от git. – vanowm
Никогда не используйте 'push -force', это плохая идея. Это серьезно повредит истории другим пользователям, которые уже потянули. Хуже того, если у вас есть ваш журнал Git, интегрированный в другие системы, такие как Redmine, Jira и т. Д., То он может серьезно повредить базы данных и быть довольно сложным для очистки. – Adam