Я экспериментировал с git уже несколько недель, и хотя я очень доволен тем, что я могу с ним сделать сейчас, есть некоторые поведения, которые я не могу объяснить в отношении rebase.
Я нашел это изображение, которое, кажется, прекрасно понимает эту концепцию:
Но я не могу заставить его работать таким образом;Вот что я сделал:
Я создал file.txt в папке, запустил git и зафиксировал его.затем я добавил одну строку 'one', commit, новую строку 'two' commit, 'three' ...
Затем я создал новую ветку 'feature', добавил пять и шесть.
и теперь, если я использую мастер git checkout, функцию git rebase, все работает так, как на картинке выше.
Но тогда я решил сбросить настройки и сделать интерактивную перезагрузку:
git rebase -я показываю: а в нано все, что у меня есть, это noop вместо моего списка коммитов ..?Если пройти через него, он все еще работает так же, но почему я не могу решить перефразировать / выбрать / пропустить коммиты в этом случае?
сейчас, если я перезагружаюсь и выполняю слияние, я не вижу никакой разницы:
---- слияние ----
(on master)
git merge feature
$ git log --oneline --all
ec382b3 (HEAD -> master, feature) five
d32ed5c four
1499f19 three
24f93bc two
544c929 one
c78eaba first push
$ git branch -a -v
feature ec382b3 five
* master ec382b3 five
---- перебазирование ----
(on master)
git rebase feature
$ git log --oneline --all
ec382b3 (HEAD -> master, feature) five
d32ed5c four
1499f19 three
24f93bc two
544c929 one
c78eaba first push
$ git branch -a -v
feature ec382b3 five
* master ec382b3 five
Последнее, но не менее важное, если я перебазируюфункция сверху мастера, а затем
$git rebase -i HEAD~3
pick 1499f19 three
pick d32ed5c four
pick ec382b3 five
отлично, я могу выбрать свои коммиты или стереть их, чтобы пропустить их, НО, помните, что есть одна строка на коммит, скажем, я хочу пропустить четвертую строку / коммит:
Конфликт:
one
two
three
<<<<<<< HEAD
=======
four
five
>>>>>>> ec382b3... five
Во-первых, почему это конфликт?предыдущие коммиты имели
one
two
three
, поэтому конфликта не должно быть, голова действительно ничего не имеет, но, что более важно, даже если четыре и пять являются отдельными коммитами, четыре все еще отображаются после того, как я удалил этот коммит?Я думал, что git сохранил изменения, а не весь файл ...?
Вот несколько вариантов поведения, которые я не понимаю, спасибо.