2017-02-17 3 views
0

Уверен, этот вопрос повторяется, но я не могу найти правильный ответ из-за слишком большого количества ответов, возвращаемых, и каждый из них не работает для меня.Перемещение Только одна фиксация от филиала А до филиала В

У меня есть ветвь A с фиксацией 1 -> 2 -> 3 -> 4 -> 5 -> 6 (фиксация 6 является самой последней).

У меня есть филиал Б с совершает 1 -> 2 (2 является самым последним)

Я просто хочу, чтобы переместить совершить 6 из ветви А к ветви В. Таким образом, 3, 4, 5, должны оставаться в отрасли .... Я просто взять обязательство 6 и переместить его в отделение Б.

конечный результат я хочу

A = 1 -> 2 -> 3 -> 4 -> 5 -> 6 B = 1 -> 2 -> 6

это возможно? и извините, если это FAQ, дубликат или просто нелогичный.

Я гугл, но все ответы, которые я нашел указал мне сделать вывод, что каждый, прежде чем совершить 6 также будет двигаться ... так что нет никакого способа для меня, чтобы взять 6, не принимая 3, 4, 5

I погуглить I нашли этот учебник

https://ariejan.net/2010/06/10/cherry-picking-specific-commits-from-another-branch/

но и здесь, как только вишневый выбор делается как совершающее 76cada - 62ecb3 перейти к мастеру. Я хочу только 62ecb3

+0

Возможный дубликат [Переместить последние фиксации (s) к новой ветви с Git] (http://stackoverflow.com/questions/1628563/move-the-most-recent-commits- to-a-new-branch-with-git) –

+0

Проблема с solutoin, на которую вы указываете, заключается в том, что с последним фиксатором все транзакции перед ними также перемещаются. Мне не нужны коммиты до самого последнего коммита. только последняя фиксация. Я просто хочу E. Я не хочу C и D. –

+0

Вы упомянули: «Конечный результат: A = 1 -> 2 -> 3 -> 4 -> 5 -> 6 B = 1 -> 2 -> 6 ". Итак, вы хотите сохранить фиксацию '6' в обеих ветвях' A' & 'B? –

ответ

3
$ git checkout branch-B 
$ git cherry-pick commit-6 
$ git checkout branch-A 
$ git reset --hard HEAD^ 

Похоже, это git checkout branch-B:

A--B   (branch-B) (HEAD) 
    \ 
    C--D--E--F (branch-A) 

git cherry-pick F:

A--B--F'   (branch-B) (HEAD) 
    \ 
    C--D--E--F (branch-A) 

git checkout branch-A:

A--B--F'   (branch-B) 
    \ 
    C--D--E--F (branch-A) (HEAD) 

git reset --hard HEAD^:

A--B--F'   (branch-B) 
    \ 
    C--D--E  (branch-A) (HEAD) 
      \ 
      F (detached and will be garbage collected) 
Смежные вопросы