Я новачок у Git, тому не соромтеся ставитися до мене як до новачка.
Наш робочий процес такий. У нас є відділення, до dev
якого я можу звернутися origin/dev
. Коли ми робимо зміни, ми створюємо відгалуження dev:
git checkout -b походження FixForBug / dev
Тепер у мене є гілка, FixForBug
яка називається відстеження (я думаю, це правильне слово) origin/dev
. Таким чином, якщо я git pull
це зроблю , то я внесу нові зміни, від origin/dev
яких чудово. Тепер, коли я закінчую свою виправлення, я переходжу до віддаленої гілки, яка називається те саме.
Спочатку я знімаю будь-які зміни origin/dev
і роблю перезавантаження:
git pull --база
Потім я натискаю зміни на віддалену гілку з однойменною назвою:
git push origin FixForBug
Тепер на віддаленому сервері є гілка, і я можу створити запит на потяг, щоб цю зміну було затверджено та об'єднано назад у гілку розробників. Я ніколи нічого не підштовхую до origin/dev
себе. Я здогадуюсь, це як досить поширений робочий процес.
Перший раз, коли я це роблю git push
, це прекрасно працює і створює віддалену гілку. Однак якщо я натискаю вдруге (скажімо, під час перегляду коду, хтось вказує на проблему), я отримую таку помилку:
помилка: не вдалося надіслати деякі відгуки на підказку ' https://github.limeade.info/Limeade/product.git ': оновлення було відхилено, оскільки підказка вашої поточної гілки знаходиться за підказкою: її віддалений аналог. Інтегруйте віддалені зміни (наприклад, підказка: 'git pull ...'), перш ніж натиснути знову. підказка. Докладні відомості див. у розділі "Примітка про швидку перемотку" в "git push --help".
Однак, якщо я це роблю, git status
це означає, що я випередив origin/dev
на 1 фіксацію (що має сенс), і якщо я дотримуюся підказки і біжу git pull
, він говорить, що все актуально. Я думаю, це тому, що я підштовхую до іншої гілки, ніж моя гілка вище за течією. Я можу виправити цю проблему, запустивши:
git push -f origin FixForBug
У такому випадку він підштовхне зміни до віддаленої гілки, кажучи (примусове оновлення), і все здається, що добре на віддаленій гілці.
Мої запитання:
Чому це -f
потрібно в цьому сценарії? Зазвичай, коли ти щось змушуєш , це тому, що ти робив щось не так або принаймні проти звичайної практики. Я добре це роблю, чи це зіпсує щось у віддаленій гілці чи створить клопоту для тих, хто повинен врешті-решт об’єднати мої речі у розробник?
git pull origin FixForBug
перш ніж я натисну на це? Добре, що має сенс. Не соромтесь додати як відповідь!