Git flow начальная фиксация - PullRequest
0 голосов
/ 27 августа 2018

Я создал новый проект, используя git-flow. По сути, я немного программировал, а затем написал точные команды git:

git flow init (and a bunch of enters)
git remote add origin <my_repo_address>
git flow feature start Argparsing
git add .
git commit -m "<message1>"
git rm tests/*
git commit -m "deleted unused stuff"
git flow feature publish

Хорошо, я бы предположил, что на моей ветке feature/Argparsing лежат два коммита. Я перехожу в свой удаленный репозиторий на GitHub и вижу это:

enter image description here

Итак, во втором сообщении о коммите я добавил Initial commit, чтобы подчеркнуть, что это был первый сделанный мной коммит. Но я думаю, мне не нужно было этого делать, поскольку git-flow впервые добавил для меня отдельный Начальный коммит.

И, как вы видите, коммит пустой:

enter image description here

Итак, мой вопрос здесь: я полагаю, что это желательное поведение, поэтому происходит ли это только тогда, когда я фактически запускаю репо с помощью функции, или это всегда так? И, кстати: как правильно инициализировать репо git-flow? Я имею в виду, что после git flow init я должен зафиксировать (и, вероятно, протолкнуть) что-то на develop или master или мне следует продолжить работу над своей функцией, а затем объединить с develop, а затем когда-нибудь с master?

1 Ответ

0 голосов
/ 27 августа 2018

это происходит только тогда, когда я действительно запускаю репо с функцией, или это всегда так?

Начальная пустая фиксация происходит как часть git flow init, если нет HEAD. Это было бы нормально, если вы создаете новый репозиторий.

Когда-то давно ребазинг первого коммита в репозитории не был хорошо поддержан , поэтому многие разработчики привыкли создавать первоначальный пустой коммит через git commit --allow-empty. Аргумент --root к git rebase, который был добавлен в Git версии 1.7.12, сделал этот процесс менее необходимым, хотя начинать с пустого коммита может быть трудно сломать. Я все еще делаю это сегодня.

Поскольку последний коммит на nvie/gitflow был в сентябре 2012 года, примерно в то же время, когда аргумент --root был добавлен к git rebase, неудивительно что этот инструмент сохраняет прежнюю лучшую практику.

Как правильно инициализировать репозиторий git-flow? Я имею в виду, что после git flow init я должен зафиксировать (и, вероятно, протолкнуть) что-то на развитие или освоение, или мне следует продолжить работу над своей функцией, а затем объединить для разработки и затем когда-нибудь освоить?

Это действительно зависит от вашего варианта использования, но я интерпретирую исходную модель , чтобы сказать, что новая работа должна быть выполнена в ветви функций (git flow feature start), а затем завершена (git flow feature finish).

Модель на самом деле не очень много говорит о переносе изменений в центральное местоположение, что также имеет смысл, поскольку Git - это распределенная система контроля версий, предназначенная для работы с произвольными удаленными устройствами (или без них). Если вы используете GitHub (вы включили этот тег, поэтому я предполагаю, что вы используете его), вероятно, имеет смысл отложить ваши изменения.

...