#git #github #command #git-branch
Вопрос:
Я добавил источник удаленного репозитория в свой код.
Мой существующий репозиторий имеет три ветви: master
, test
, user
.
Но после добавления и подтверждения удаленного origin
по команде « git remote -v
, команда « git branch --list
отображает только одну ветвь, которая есть master
.
Я не знаю, точно ли это указывает на то происхождение, куда я хочу вставить код.
Я хочу продвинуть новый код в test
ветвь.
филиал git-avv
master first commit
origin first commit
* test first commit
remotes/origin/master Update register.tsx
remotes/origin/test Update next.config.js
remotes/origin/aman june 25
Я хочу переместить его в удаленную тестовую ветвь и удалить локальные ветви origin, test и master.
git switch -c test
fatal: only one reference expected
И когда я попытался переключиться на remote/origin/test
ветвь из vscode, он сказал, что ветвь «тест» уже существует.
Ответ №1:
Для этого вам нужно:
git fetch
Затем a git branch -avv
покажет вам все ветви и их SHA1.
Примечание: будет отображаться только git branch --all/-a
список локальных и удаленных филиалов.
Затем вы можете сравнить master
и origin/master
зафиксировать.
Пояснение: см. раздел «Внутренние компоненты Git — Спецификация«.
$ git remote add origin https://github.com/schacon/simplegit-progit
Выполнение приведенной выше команды добавляет раздел в
.git/config
файл вашего репозитория, указав имя удаленного (origin
), URL-адрес удаленного репозитория и спецификацию, которая будет использоваться для извлечения:[remote "origin"] url = https://github.com/schacon/simplegit-progit fetch = refs/heads/*:refs/remotes/origin/*
Ссылка на выборку является причиной, по которой выборка git заполнит origin
пространство имен всеми удаленными ветвями, которые Git может найти в удаленном репозитории.
Я хочу перенести новый код в тестовую ветку.
Если у вас есть:
- код в настоящее время изменяется, но еще не добавлен/зафиксирован
- только один местный филиал (
master
)
Вы можете сделать:
git fetch
git switch -c test
git add .
git commit -m "Code for test"
git rebase origin/test
git push
Поскольку вы делаете git fetch
это первым, проверка локального филиала будет выполняться автоматически origin/test
.
Видеть git switch
:
Если
<branch>
не найден, но существует ветвь отслеживания ровно в одном удаленном (назовите его<remote>
) с соответствующим именем, рассматривайте как эквивалент:$ git switch -c <branch> --track <remote>/<branch>
Этот rebase
шаг гарантирует, что ваша локальная фиксация будет выполнена/повторно использована сверху origin/test
.
У меня есть одна локальная фиксация , но это было не намеренно.
Я хочу перенести код вremote/test
ветвь и остальные локальные ветви, напримерmaster
,origin
иtest
я хочу удалить их все
Тогда я бы сделал это, чтобы убедиться, что я ничего не потеряю:
- клонируйте свое удаленное хранилище в другом месте, непосредственно в
test
ветке (используяgit clone --branch/-b
) - импортируйте свой текущий код
- сделайте новую фиксацию в тестовой ветке
- тест на толчок
То есть:
cd /path/to/existing/local/repo
cd ..
git clone -b test https://github.com/<me>/<myRemoteRepo> repo2
cd repo2
git --work-tree=../repo add .
git commit -m "Import from original local repo"
git push
Комментарии:
1. У меня есть две тестовые ветви, как удалить текущую тестовую ветвь master origin * тестовые пульты дистанционного управления/источник/регистр обновления мастера.tsx пульты дистанционного управления/источник/обновление теста next.config.js пульты дистанционного управления/происхождение/аман 25 июня
2. @aman Ты имеешь в виду один локальный, один удаленный? Не стесняйтесь редактировать свой вопрос: вы можете отформатировать свои правки там, в то время как в комментариях нет форматирования.
3. да, я хочу удалить все локальные ветви, и две из них имеют те же имена, что и удаленные ветви test и master.
4. @aman, вы видите, что у вас есть только один местный филиал. Мой ответ был бы уместен.
5. когда я попытался переключиться на тестовую ветвь, она говорит, что ветвь уже существует