#git #github #git-bash
Вопрос:
У меня есть два местных филиала, main и dev. Когда я пытаюсь зафиксировать и перенести изменения из dev в main, это говорит о том, что все обновлено, и на самом деле ничего не происходит. Кроме того, мое репо на github не отражает последние изменения в моем локальном репо, хотя я пытался поднять его, и оно говорит, что оно было успешным. Фиксации не отображаются в моем новом репо.
Когда я набираю «git remote show origin», это вывод:
$ git remote show origin * remote origin Fetch URL: lt;myRepo'sURLgt; Push URL: lt;myRepo'sURLgt; HEAD branch: main Remote branches: dev tracked main tracked Local branch configured for 'git pull': main merges with remote main Local refs configured for 'git push': dev pushes to dev (fast-forwardable) main pushes to main (up to date)
Я очень новичок в git, так что учусь по ходу дела. У кого-нибудь есть какие-либо идеи относительно того, почему я испытываю эту проблему? Я могу запустить другие команды, чтобы предоставить дополнительную информацию, если это необходимо
Чтобы подтолкнуть изменения, вот процесс, которому я следую:
Во-первых, статус git. Результат такой:
On branch dev Changes not staged for commit: (use "git add lt;filegt;..." to update what will be committed) (use "git restore lt;filegt;..." to discard changes in working directory) modified: __pycache__/app.cpython-39.pyc modified: app.py no changes added to commit (use "git add" and/or "git commit -a")
Затем я запускаю «git add». Никаких выходных данных из этой команды.
Далее, «git commit-m «тест». Вот результат:
$ git commit -m "test" [dev 5af52ce] test 2 files changed, 4 insertions( ), 8 deletions(-)
Наконец, «git push origin main». Вот результат:
$ git push origin dev Enumerating objects: 20, done. Counting objects: 100% (20/20), done. Delta compression using up to 16 threads Compressing objects: 100% (14/14), done. Writing objects: 100% (16/16), 1.77 KiB | 1.77 MiB/s, done. Total 16 (delta 10), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (10/10), completed with 3 local objects. To lt;myRepo'sURLgt; 0f1504d..5af52ce dev -gt; dev
Спасибо!
Комментарии:
1. Нам нужно больше деталей. Что вы подразумеваете под словами «Я пытаюсь совершать и продвигать изменения»? Какие именно команды вы выполняете? Каковы результаты этих команд? Вы можете проверить, что каждая фиксация содержит ожидаемые изменения , используя такие команды
git status
, какgit log
, иgit diff
. Используйтеgit help lt;commandgt;
для получения более подробной информации о том, как использовать эти команды.2. Основываясь на выводе, показанном здесь , команда
git push origin dev
, вероятно, отправит новые коммиты, которые у вас естьdev
, которые еще не существуют в репозитории Git на GitHub, в репозиторий Git на GitHub. (Возможно, что выdev
даже с вашимmain
, а GitHubdev
просто отстает; мы не можем судить по тому, что вы показали здесь.)3. Спасибо за отзыв. Я только что добавил еще немного информации. После проверки github только что мне показалось, что я могу перейти прямо из своей локальной ветки разработки в ветку разработки на github, полностью минуя «основную» ветку. Я предполагаю, что моя иерархия ветвей испорчена, но я не уверен, как это проверить/исправить
4. «полностью обходя основную ветку», но именно так работает git… Возможно, это просто некоторая путаница в том, как на самом деле работает git? Можете ли вы подробнее рассказать о том, в чем на самом деле заключается проблема? Я имею в виду, что вы, вероятно, видите какое-то сообщение о статусе, с которым вы не согласны, можете ли вы опубликовать это точное сообщение о статусе (или другое наблюдение), объяснить, почему вы не согласны и что вы ожидали увидеть? ` До сих пор все команды и выходные данные в вашем вопросе, похоже, указывают на то, что проблемы нет, но очевидно, что она у вас есть, так как вы задали вопрос.
5. Я подозреваю, что часть путаницы здесь связана с тем, что вы видите на GitHub. По умолчанию GitHub покажет структуру каталогов
main
филиала. Вы можете выбратьdev
ветвь, чтобы просмотреть ее содержимое. Вы также можете установить ветвь по умолчанию на любую ветвь, какую пожелаете.
Ответ №1:
Когда я пытаюсь зафиксировать и перенести изменения из dev в main,
То , что вы делаете, — это переход от dev
к origin/dev
.
И поскольку в удаленном репозитории отображается ветвь по умолчанию main
, вы не «видите» никаких очевидных изменений (вам нужно будет переключиться на ветвь разработки на веб-странице, чтобы увидеть вашу фиксацию).
Вы можете объединить dev локально в main, а затем нажать main:
git switch main git merge dev git push
Комментарии:
1. Это то, что я пытался сделать, я просто перепутал команды/терминологию, и «слияние» было тем, что мне было нужно. Спасибо!