Git: вопрос о создании веток и клонировании репозиториев

Я только что создал ветку от master под названием new_branch

Итак, я извлекаю эту новую ветку, добавляю новый файл, а затем добавляю/фиксирую/нажимаю.

git add new_file.php
git commit -m "A new file"
git push origin new_branch

Итак, после этого я клонировал свой пример репо, и дело в том, что этот файл, который я добавил в новую ветку, не находится в главной ветке клонированного рабочего дерева. Что мне делать, чтобы найти этот новый файл в основной ветке клонированного рабочего дерева?

ПРИМЕЧАНИЕ: извините за неточность названия. Может кто захочет поменять.

Похоже, вы путаете master (фактическая ветка) с HEAD (указатель для ветки, указывающей, на какую ветвь будет влиять git commit и др.). Вы зафиксировали новый файл в new_branch, а не master, и это ветка, на которую вы нажали. Поэтому, когда вы снова клонируете удаленный репозиторий, вам нужно снова проверить new_branch, чтобы увидеть new_file.

chepner 30.07.2019 20:08

Аргумент new_branch относится к ветке на origin, которую следует обновить, а не к ветке в вашем локальном репозитории для отправки от. Это всегда та ветвь, которая в данный момент извлечена (это ветвь местный, также называемая new_branch).

chepner 30.07.2019 20:12

@chepner да, вы правы: я только что проверил ветку new_branch в своем клонированном репо и могу найти файл. Но как я могу автоматически получить этот файл в ветке master после клонирования?

ziiweb 30.07.2019 20:12

Есть несколько способов, но какой из них вы выберете, зависит от того, какие отношения вы хотите между master и new_branch. Вы можете объединить new_branch в master; вы можете выбрать один коммит от new_branch до master; вы можете проверить new_branch (добавив new_file в свой рабочий каталог , then check out master` (оставив new_file как неотслеживаемый файл в вашем рабочем каталоге), а затем зафиксировать new_file в master, как если бы это был совершенно новый файл.

chepner 30.07.2019 20:14

Какой вариант вы выберете, может также зависеть от ответа на вопрос «Почему вы в первую очередь зафиксировали new_file в new_branch вместо master

chepner 30.07.2019 20:15

@chepner хорошо, я читал, что для внесения изменений я должен создать новую ветку, внести изменения, а затем добавить/зафиксировать/отправить их.

ziiweb 30.07.2019 20:17

Читать где? Как правило, вы делаете это с намерением объединить ветку обратно с веткой, от которой вы исходно ответвились. Существуют различные рабочие процессы, которым можно следовать при использовании Git; ветки являются лишь частью реализации каждого рабочего процесса, и вы не можете сказать, что какое-либо конкретное использование ветки само по себе является правильным или неправильным.

chepner 30.07.2019 20:19

@chepner, так что для того, чтобы мой новый файл был в ветке master, мне придется сделать последний шаг git push origin master, верно? в этом нет ничего плохого, верно?

ziiweb 30.07.2019 20:31

Вероятно, нет, учитывая этот простой пример, но обычно вы не перенаправляете одну ветку в другую другую ветку. Либо git checkout master; git merge new_branch; git push origin, либо просто добавьте new_file к master в первую очередь, не создавая новую ветку.

chepner 30.07.2019 20:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
9
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш вопрос указывает на то, что вы не до конца поняли, что такое ветка и что такое ветка master. Я бы рекомендовал читать больше и делать уроки.

Чтобы ответить на вопрос с помощью очень простого рабочего процесса, который вы могли бы использовать: я предполагаю, что «new_branch» — это ветка функций, и ваш рабочий процесс заключается в объединении веток функций в одну основную ветку (классический, простой рабочий процесс git). переключиться на основную ветку:

git checkouter master

объединить вашу функцию:

git merge new_branch

(исправить конфликты слияния, так как вы просто добавляете файл, их не должно быть) опубликовать изменения:

git push origin

Теперь вы объединили свою новую функцию с основной веткой, и каждый клон будет содержать вашу функцию. Как упоминал @chepner, git предлагает гораздо больше возможностей, однако для изучения и понимания веток это простая отправная точка.

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