Слить или перебазировать? - PullRequest
0 голосов
/ 04 июня 2018

Вот мои текущие коммиты.

commit1 - commit 2 - commit3 - commit4 - cmmit5 (my-app branch)

Я извлек commit1 и внес изменения

git checkout <commi1's SHA>
// made some changes
git add . && git commit -m "commit prime 1"
// made other changes
git add . && git commit -m "commit prime 2"

Теперь я хочу объединить (?) Или перебазировать (?)на вершине ветки my-app.

Мне нет дела до коммита 5, я просто хочу поместить мой измененный commit1 в верхнюю часть ветви моего приложения (не объединяя, а переопределяя!),Таким образом, результат будет ниже

commit1 - commit 2 - commit3 - commit4 - cmmit5 - commit prime 1 - commit prime2" (my-app branch)
  • Я не думаю, что мне нужно "объединить" commit 5 и commit prime 2.
  • Может быть, я должен использовать rebase?

Вот мое текущее приглашение терминала:

jbaaa at jo's computer ~/directory on (HEAD detached from 8a36f955fc)*

вывод состояния git:

HEAD detached from 8a36f955fc

нечего коммитить, рабочее дерево чистое.

Предположим, что commit5 равно

'12345'
''
''

commit1 равно

'1'
''
''

commit prime2 равно

'1' 
'prime1 and prime2'

Окончательный результат должен быть

'1'
'prime1 and prime2'

Еслимы merge, вместо этого мы получаем этот результат.Как нам этого избежать?

'12345'
'prime1 and prime2'

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вы находитесь в так называемом состоянии HEAD отсоединено, что означает, что вы не работаете на ветке.Во-первых, поместите вашу текущую работу в ветку.

git checkout -b my-feature

Если вы хотите отбросить коммит 5, перенесите вашу работу на коммит 4.

git rebase <commit4's SHA>

То, что вы получите, будет выглядеть следующим образом:

c1 - c2 - c3 - c4 - c5 (my-app)
                \
                 p1 - p2 (my-feature)

Если вам не нужен коммит 5, переведите my-app в my-feature (p2).

git checkout my-app
git reset --hard my-feature

Окончательный результат:

                 c5 # no branch
                /
c1 - c2 - c3 - c4 - p1 - p2 (my-app, my-feature)

Я боюсь использовать rebase

Если вы не уверены в необходимости перебазирования, оставьте вашу текущую ветку нетронутой и создайте новую ветку, прежде чем начинать перебазирование, например::

git checkout -b my-feature-rebased

Окончательный результат:

                 c5 # no branch
                /
c1 - c2 - c3 - c4 - p1 - p2 (my-app, my-feature-rebased)
 \
  p1 - p2 (my-feature) # backup
0 голосов
/ 04 июня 2018

вы можете использовать git rest --hard <commit1 hash>, чтобы переместить голову на коммит1

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