Синхронизация github - восходящий, исходный и локальный репозитории

Я новичок в TortoiseGit/github, и это сводит меня с ума..

По сути, я создал локальный филиал, скажем, myBranch, сделал что-то, что я хочу сохранить, а потом почувствовал, что перепутал другие существующие ветви. Я также сделал неверный толчок к своему происхождению, поэтому некоторые ветки там тоже были перепутаны. Теперь я хочу сохранить только ту работу, которую я выполнял в своем локальном myBranch, и обновлять все остальное в соответствии с исходной версией так, чтобы мой локальный репозиторий и источник были "чистыми".

Во-первых, я обнаружил, что единственный способ обновить источник в соответствии с апстримом - это сначала обновить мой локальный репозиторий, а затем отправить его в источник?

Во-вторых, я взял вверх по течению. Но когда я извлекаю данные в upstream/master или в свой локальный мастер или пытаюсь объединить upstream/master и мой локальный мастер, всегда появляется эта ошибка "Следующие неотслеживаемые файлы рабочего дерева будут перезаписаны извлечением / объединением". Что может быть причиной?

В-третьих, в github я вижу, что в репозитории upstream есть 2 ветви: master и ASecondBranch, поэтому у origin тоже есть эти 2 ветви для обновления. Но после того, как я получил, есть только upstream/master (можно увидеть это с помощью 'git branch -r'), пока я не могу найти upstream/ASecondBranch. Тогда как мне обновить мой локальный и исходный ASecondBranch в соответствии с вышестоящим?

Заранее спасибо!

1 ответ

Во-первых: да, единственный способ поддерживать источник в актуальном состоянии с помощью репозитория upstream - это сначала извлечь из апстрима в локальный клон, а затем вытолкнуть изменения в origin.

Обычно это не имеет большого значения; если вы работаете с вилкой, чтобы внести свой вклад в чужой проект, вы должны сохранить свои изменения в своей собственной ветке (что, как вам кажется, уже есть) и отправить запрос на извлечение в вышестоящий проект из этой ветки. Не имеет значения, если master позади upstream/master скажем, потому что запрос на удаление касается только указанной вами ветки.

Если вы сделали коммиты на master что вы не хотите сохранить, вы хотите reset --hard в upstream/master, Чтобы сделать это в черепахе, проверить мастер, выбрать из upstream в диалоговом окне синхронизации откройте представление журнала, щелкните правой кнопкой мыши на коммите в upstream/master выберите "Reset master to this" и выберите "hard". Обратите внимание, что при следующем нажатии вам нужно будет выбрать "принудительная перезапись". Вы можете повторить с другими ветками по мере необходимости. Прежде чем сделать это, дважды проверьте свой журнал и убедитесь, что вы в порядке, избавляясь от работы, которую вы сделали локально!

Второе. Похоже, в вашей рабочей копии есть изменения, которые вы не ставили и не фиксировали. Когда вы работаете с git, гораздо проще, если вы привыкнете часто делать коммиты и сохранять свою рабочую копию в чистоте. Либо передайте изменения в ветку, в которой вы находитесь, либо спрятайте их, либо очистите. Неотслеживаемые файлы должны появиться в диалоге фиксации Tortoise.

Третье: этот странный; git fetch должен создать удаленные ветви отслеживания для новых филиалов в удаленном, из которого вы выбираете. Вы установили что-то в диалоге синхронизации, чтобы получить мастер только по ошибке? Попробуйте указать удаленную ветку явно по имени.

Другие вопросы по тегам