Ответ 1
Корневая причина: Чтобы сократить пояснение, мне кажется, что ваш local/production
не отслеживает origin/production
. Вы можете проверить это с помощью git branch -avv
.
О git push
: обратите внимание, что git push
без аргументов обновит все удаленные ветки, обновленные в ваших локальных ветвях отслеживания (с страницы руководства git-push(1)
):
git push ... [<repository> [<refspec>...]]
The special refspec : (or +: to allow non-fast-forward updates) directs git to
push "matching" branches: for every branch that exists on the local side, the
remote side is updated if a branch of the same name already exists on the remote
side. This is the default operation mode if no explicit refspec is found (that is
neither on the command line nor in any Push line of the corresponding remotes
file---see below).
Потому что результат простого git push
иногда бывает немного неожиданным, если забыли, какие изменения произошли в локальных ветвях, мне лично явно нужно указать, какие ветки я хочу нажать. В вашем случае, похоже, это то, что вы хотите сделать:
git push origin local/production:production
Если вы хотите local/production
отслеживать origin/production
, вы можете сделать ветку отслеживания local/production
для origin/production
с помощью опции -u
:
git push -u origin local/production:production
(требуется только один раз). Затем вы можете вывести из источника значение local/production
.
Резюме: вам нужно понять концепцию ветки отслеживания и своеобразную семантику git push
.
P.S. Я задаюсь вопросом о вашем выборе названия вашего ветки local/production
здесь. Почему не просто production
? Я подозреваю, что у вас уже есть production
отслеживание origin/production
и, возможно, используйте local/production
для вашей локальной разработки. В этом случае разумный рабочий поток выглядит следующим образом:
-
git pull origin production:production
, чтобы вытащить изменения вproduction
- Если в
production
появляются новые коммиты, то естьlocal/production
, то либо rebase yourlocal/production
onproduction
(или mergeproduction
onlocal/production
) - В тот момент, когда вы хотите нажать свои изменения,
merge
илиcherry-pick
, ваш фиксатор наproduction
и нажмите изменения с помощьюgit push origin production:production
.