Выход из беспорядка с 2 ветками в git - PullRequest
2 голосов
/ 03 февраля 2012

У меня беспорядок в git на 2 ветках. Frontend содержит огромную часть продолжающейся работы по разработке - она ​​должна была быть разбита на несколько веток, и она немного испорчена.

Вот ситуация - frontend слева, вершина master справа:

| frontend 1: newest commit (to be pushed)  
| frontend 2: recent commit (to be pushed)  
| frontend 3: week-old commit (this was a temporary save of lots of ongoing work - it probably should have been a stash. This one cannot be pushed)  
|  
|  | master: this is the current state of the site
|  | master: previous commit
| /
|/ 
| master before `git branch frontend`

На ветке frontend, я бы хотел:

  • перевод frontend 1 и frontend 2 на master, чтобы их можно было теперь нажать.
  • 'отменить' frontend 3 и переместить код обратно в стадию, чтобы я мог правильно совершать коммиты (т.е. не в огромной куче общей работы)

Я новичок в git и боюсь, что нанесу больше урона (как я уже сделал), если буду продолжать вводить команды, пытаясь сделать его лучше. Если вы в состоянии помочь, это будет высоко ценится. Спасибо.

Ответы [ 3 ]

2 голосов
/ 03 февраля 2012
  1. Выполните интерактивную перебазировку , чтобы изменить порядок фронтовых коммитов, чтобы frontend 3 был самым новым.
  2. Затем, находясь во внешнем интерфейсе, выполните git reset HEAD^, чтобы "отменить" интерфейс 3 при сохранении изменений.
  3. git stash, чтобы скрыть изменения от frontend 3, как вы и предполагали
  4. Переключение на мастер.
  5. Слияние frontend в master.(Или перебазируйте, в зависимости от того, что вы делаете.)
  6. Поместите спрятанные изменения в любое место и продолжите работу.

Это предполагает, что интерактивное перебазирование может быть действительно выполнено чисто - т.е.изменения в frontend 3 не связаны с изменениями в frontend 1 и frontend 2.

0 голосов
/ 03 февраля 2012

Самый простой способ, вероятно, - выбрать вишню frontend2 и frontend1 в мастер, затем также вишню frontend3 и выполнить мягкий сброс.

0 голосов
/ 03 февраля 2012

Вы можете cherry-pick два коммита, на которые вы хотите вернуться master.Тогда rebase -i на frontend позволит вам изменить порядок и разбить коммиты на ветке так, как вам нравится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...