Подтвердить что ты не робот

Как нажимать/тянуть Git rebase

Я хотел бы использовать git rebase, чтобы чисто объединить функцию в главной ветке (менее коммиты или, по крайней мере, в верхней части журнала изменений). Обратите внимание, что я единственный, кто работает в репозитории.

После прочтения Git рабочего процесса и вопросов по rebate vs merge, я обнаружил, что git rebase будет довольно приятным и, как Micah, я бы хотел git push rebased меняется просто потому, что я работаю над ними из разных мест (например: мой ноутбук, мой дом, другой компьютер где-то...)

Итак, вот два решения (для двунаправленного уродливого слияния):

  • Используя git push -f, чтобы нажать, а затем натягивать другую машину, но как получить последнюю версию на других машинах?
  • Использование слияния для объединения основных изменений в ветки функции, git push/pull, и после того, как вы достигли зрелости, выполните одну переустановку (в одной или нескольких ошибках)

(2) будет выглядеть следующим образом:

git co -b feature-a
... change files
git push origin feature-a
... moving to another PC
git pull origin feature-a
... change files
git merge master
... change files (not the "special rebase")
git rebase master
git co master
git merge feature-a
git branch -d feature-a
git push origin :feature-a

Какое решение, по вашему мнению, будет работать? Я пока не пробовал ни одного из них (в основном, опасаясь, что мой журнал более запутанный).

4b9b3361

Ответ 1

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

Rebasing (или любая другая форма перезаписи) ветки, на которой работают другие, - это плохая идея: кто-то за ней вынужден вручную исправить свою историю. В этом разделе объясняется, как сделать исправление с нисходящей точки зрения. Реальное решение, однако, состояло бы в том, чтобы избежать перестановки вверх по потоку в первую очередь.

Несмотря на то, что вы единственный разработчик, вы все равно будете другими (с точки зрения одного репо) при работе в других клонов. Как вы видели, этот рабочий процесс - это хлопот.

Пусть ваши изменения готовятся в ветках. Когда ветка готова к прайм-тайму, затем переустановите, объедините ее в master и удалите ее ветку. Ваша жизнь будет проще всего, если вы сохраните время жизни ветвей и их узкие области.

Ответ 2

Я всегда убеждаюсь, что я совершаю и нажимаю (-f) все с любой машины, которую я оставляю.

Когда я прихожу к какой-то другой машине:

 git fetch -v
 git checkout mybranch # Already checked out with old HEAD
 git reset --hard origin/mybranch

Это хорошо работает, потому что я знаю, что другое "я" на разных компьютерах постоянно фиксирует и толкает, прежде чем я уйду (и, следовательно, на машине, на которой я нахожусь, не было никаких изменений)