Перезаписать локальные файлы файлами из главной ветки - PullRequest
0 голосов
/ 28 февраля 2019

Я запустил проект и поместил его в репозиторий github.Затем я хотел добавить еще одну функцию и создал новую ветку (feature_branch).Я начал добавлять некоторый код, но, столкнувшись с кучей проблем, теперь я хотел бы просто перезаписать свои локальные файлы кодом, который есть в основной ветке.

Я попытался:

git checkout master (чтобы вернуться в основную ветку)

git fetch --all в надежде, что это перезапишет все (я нашел это на https://www.freecodecamp.org/forum/t/override-local-files-with-git-pull/13216)

В этот момент я получаю ошибку

fatal: 'feature_branch' does not appear to be a git repository

git branch -a показывает мне следующее:

*master
remotes/origin/feature_branch
remotes/origin/master

Сейчас я немного запутался. Извините, я новичок в git, поэтомуДо сих пор я действительно использовал для фиксации «готовых» проектов или после добавления новых вещей, я никогда не пытался вернуться к более старой версии. Любая помощь будет принята с благодарностью!:)

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Команда:

git fetch --all

означает выборка со всех пультов , а не "выборка всех ветвей".Fetch уже извлекает все ветви, но только с одного пульта (если не указано иное).

Сообщение об ошибке, которое вы видите, означает, что один из ваших пультов является поддельным.У вас есть пульт с именем feature_branch вместе с обычным пультом с именем origin.fetch --all пытается извлечь из origin, что, по-видимому, успешно, а также с пульта с именем feature_branch.URL-адрес, прикрепленный к пульту с именем feature_branch, вероятно, неправильный, и выборка не удалась, и вы видите ошибку, которую видите.

Обратите внимание, что удаленный - это просто короткая строка - по вашему выбору - которая хранит URL-адрес иобеспечивает лицевую часть для удаленного отслеживания имен.Следовательно, короткая строка origin хранит URL для другого Git, а также предоставляет origin/ часть origin/master и так далее.Вы можете создавать и удалять пульты по своему усмотрению, используя git remote add и git remote remove.Вы можете переименовать существующий пульт с помощью git remote rename.

Очистить фиктивный пульт и продолжить с обычным процессом возиться с ветвями.

0 голосов
/ 28 февраля 2019

Если вы не хотите использовать старую ветвь, то удалите ветку, используя git branch -D branchName.

Затем, вернитесь к мастеру git checkout master.

Затем получите последнее извлечение от мастера git pull origin master.

А затем снова создайте ветку git checkout -b branchName.

Таким образом, у вас будут данные основной ветки в вашей новой ветке,

Надеюсь, это поможет!

0 голосов
/ 28 февраля 2019

Почему ваша ветвь исчезла?

Либо вы каким-то образом удалили свою ветвь функции, либо, возможно, вы не заметили, что создание вашей ветки по какой-то причине не удалось *, но в любом случаеСлучай, поскольку в вашем коде все еще есть ваши последние изменения, и единственная локальная ветвь - это master, кажется, что коммиты вашей недавней работы были выполнены на master без вашего ведома.

* сейчас благодаря torek мы знаем, что случилось, но решение остается прежним

Как это исправить?

Я бы сказал, просто перейдите на git stash.

Если вы это сделаете, все, что еще не зафиксировано, будет помещено во временную фиксацию в специальную ветку с именем stash, готовую всплыть с git stash apply или git stash pop (или никогда больше не вызываться, в этом отношении, например,Вы, кажется, хотите здесь).

Преимущество, которое он имеет перед выполнением git reset --hard, состоит в том, что вы могли бы хотеть, через несколько дней (или недель?), вспомнить, как все было вотказавшая ветка, что вы пробовали, и если да, то сохранение этого контентагде-то будет драгоценным.

...