Как перенести новый код проекта в определенную ветвь существующего репозитория github?

#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. когда я попытался переключиться на тестовую ветвь, она говорит, что ветвь уже существует