как переучиться в Git - PullRequest
       2

как переучиться в Git

15 голосов
/ 13 февраля 2011

Какие неинтерактивные команды git в каждом случае добиваются изменения от До до После?

1a.перевоспитание I

До:

A---B---C---D

После:

  C'---D'
 /
A---B

1b.перевоспитание II

До:

  C---D
 /
A---B

После:

  C
 /
A---B---D'

1c.перевоспитание III

До:

  C
 /
A---B---D

После:

  C---B'---D'
 /
A

Ответы [ 2 ]

16 голосов
/ 13 февраля 2011

Все они выглядят как приложения git rebase --onto.

1a.перевоспитание I

До:

A---B---C---D

После:

  C'---D'
 /
A---B

Настройка ветвей для маркировки конкретных коммитов и затем перебазирование на.

  1. git checkout -b ex1a-b B
  2. git checkout -b ex1a-d D
  3. git checkout -b ex1a-a A
  4. git rebase --onto ex1a-a ex1a-b ex1a-d

1b.переопределение II

До:

  C---D
 /
A---B

После:

  C
 /
A---B---D'

Создание веток, аналогичных приведенным выше: git rebase --onto ex1b-b ex1b-c ex1b-d.

1c.Переучивание III

До:

  C
 /
A---B---D

После:

  C---B'---D'
 /
A

Снова с ветками, но теперь просто git rebase ex1c-c ex1c-d.

6 голосов
/ 02 октября 2013

Это зависит от вашего определения B', C' и D'.

Если вы хотите перемещаться вокруг патчей , то есть (в первом примере)git diff B C == git diff A C', затем вы хотите "перебазировать" (не "reparent"), используя git rebase, как описано Emil .

Если, с другой стороны,Вы хотите перемещаться вокруг снимков , тогда вы действительно хотите «перезаряжаться».Для этого я предлагаю использовать git reparent.

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

(Ниже предполагается, что вы находитесь в филиале на D.)

1a.перевоспитание I

git rebase -i B
# Select the "edit" command for C
git reparent -p A
git rebase --continue

1b.перевоспитание II

git reparent -p B

1c.перевоспитание III

git rebase -i A
# Select the "edit" command for B
git reparent -p C
git rebase --continue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...