Что я могу сделать, чтобы решить "1 коммит за мастером"?
После нажатия я видел это сообщение в удаленном хранилище:
1 коммит за мастером.
Это слияние имеет конфликты, которые должны быть разрешены до того, как оно может быть зафиксировано.
Чтобы вручную объединить эти изменения в TA20footerLast, выполните следующие команды:
> git checkout 7c891f50c557
#Примечание: это создаст отдельную голову!
> Git Merge Remotes/ Origin/ Master
13 ответов
Я знаю, что это поздний ответ, но он может помочь другим.
Прежде чем начать, если вам неудобно работать с командной строкой, вы можете выполнить все следующие шаги, используя SourceTree, GitExtension, GitHub Desktop или ваш любимый инструмент. Просто следуйте инструкциям:
Чтобы решить эту проблему, у вас может быть два сценария:
1) Исправить только ветку удаленного репозитория, которая находится за коммитом
Пример: обе ветви находятся на удаленной стороне
голова === Мастер ветка
позади === развить ветку
Решение:
i) клонировать репозиторий в локальную рабочую область: это даст вам ветку Master, которая является головой с коммитом
git clone repositoryUrl
ii) Создать ветку с именем Develop и оформить заказ на эту ветку локально
git checkout -b DevelopBranchName // this command creates and checkout the branch
iii) Вытащить из удаленной ветки Develop
git pull origin DevelopBranchName
iv) Объединить локальный филиал Develop с удаленным филиалом Develop.
git merge origin develop
v) Переместить объединенную ветвь в удаленную ветвь разработки.
git push origin develop
2) Локальная ветвь Мастер находится за удаленной веткой Мастер
Это означает, что все локально созданные ветви позади.
Перед этим вы должны зафиксировать или спрятать все изменения, которые вы внесли в ветку за коммитами.
Решение:
я) Оформить заказ в местном филиале
git checkout master
ii) Вытащить из удаленной мастер ветки
git pull origin master
Теперь ваш локальный ведущий синхронизирован с удаленной ветвью, но другие локальные удаленные устройства не синхронизируются с вашей локальной ветвью из-за вышеуказанной команды. Чтобы это исправить:
1) Оформите ветку, которая находится за вашей локальной веткой Master
git checkout BranchNameBehindCommit
2) Слияние с местной веткой Мастер
git merge master // Now you branch is in sync with local Master branch
Если эта ветка находится в удаленном хранилище, вы должны сделать толчок
git push origin branchBehindCommit
Если ваша ветвь отстает от мастера, тогда выполните:
git checkout master (you are switching your branch to master)
git pull
git checkout yourBranch (switch back to your branch)
git merge master
После объединения проверьте, есть ли конфликт или нет.
Если НЕТ КОНФЛИКТА, тогда:
git push
Если есть конфликт, то исправьте ваши файлы, а затем:
git add yourFile(s)
git commit -m 'updating my branch'
git push
Клонируйте свою вилку:
git clone git@github.com:YOUR-USERNAME/YOUR-FORKED-REPO.git
Добавьте удаленный из исходного репозитория в ваш разветвленный репозиторий:
cd into/cloned/fork-repo
git remote add upstream git://github.com/ORIGINAL-DEV-USERNAME/REPO-YOU-FORKED-FROM.git
git fetch upstream
Обновление вашего форка из исходного репо, чтобы не отставать от их изменений:
git pull upstream master
git push
Если сообщение "n совершает за мастером".
Вам нужно переустановить ветку dev с помощью master. Вы получили указанное выше сообщение, потому что после проверки master ветки dev ветка master получила новый коммит и продвинулась вперед. Вам нужно разместить эти новые коммиты в своей ветке разработки. Шаги:
git checkout master
git pull #this will update your local master
git checkout yourDevBranch
git rebase master
могут возникнуть конфликты слияния, которые необходимо разрешить.
Допустим, сейчас в вашей ветке myBranch
Сделайте следующее:-
git status
Если все изменения зафиксированы
git pull origin master
Если изменения не зафиксированы, чем
git add .
git commit -m"commit changes"
git pull origin master
Проверьте, есть ли конфликты, чем разрешите и зафиксируйте изменения
git add .
git commit -m"resolved conflicts message"
И чем толкнуть
git push origin myBranch
- мастер проверки git
- мастер происхождения git pull
- git checkout BranchNameBehindCommit (ваша ветка)
- мастер слияния git
- git push origin ветка BehindCommit
простое исправление
клонировать репозиторий в вашу систему
git clone repositoryUrl
Перейдите в ветку, в которой есть коммиты за основной веткой.
git checkout branch_name
Перебазируйте ветку на master
git rebase -i origin/master
откроется редактор кода vi, введите :wq и нажмите Enter
:wq
Наконец, отправьте изменения в ветку, теперь не будет никаких коммитов.
git push -f
Взглянув на ваш репозиторий в GitHub...
Представьте себе сценарий, в котором main или master является вашей основной ветвью, а также у вас есть другая ветка как dev, а ваша ветка dev - это N коммитов за main или master, и ничего не говорится об этом, живущем на вашем локальном компьютере.
Как действовать...
Во-первых, вам нужно сделать клон из репозитория Github на свой компьютер, однако сначала ваш локальный git не должен знать о статусе вашей вторичной ветки, только от основного или основного, поэтому Git получает только вашу удаленную ветку метки обновлено, а в вашем локальном.
Итак, что вам нужно, это как минимум 1 фиксация, 1 нажатие на главную или главную и 1 откат к вам локально.
НЕ нажимайте ничего для своей ветки разработки, иначе у вас будет 1 коммит впереди, а N коммитов после main или master (так что конфликты) ...
Итак, вам понадобится вспомогательная ветвь для отправки запроса на вытягивание на удаленный главный или главный сервер.
Без дальнейших церемоний. Как действовать в этом сценарии:
После клонирования репозитория ...
git checkout -b aux-branch
-> он создаст и проверит ветку
Теперь вам нужно внести хотя бы одно изменение, чтобы записать первую фиксацию в вашем локальном Git, предполагая, что вам нечего реализовать в данный момент ... Возьмите файл README.md, чтобы изменить букву, пробел, пустая строка подробнее ...
git status
-> вы увидите, что ваш файл README был изменен
git add README.md
-> добавить его в промежуточную область, готовую к фиксации
git commit -m "modified readme file"
git push -u origin aux-branch
-> он должен сгенерировать ссылку, которая приведет вас к вашему репозиторию, чтобы открыть и принять заказанный запрос на вытягивание.
Я использую принятие этого с помощью Rebase и Merge (последняя опция в зеленой кнопке в раскрывающемся списке), после принятия GitHub спросит вас, хотите ли вы удалить aux-ветку ... да, вы хотите, поэтому удалите, потому что ваш основной или главный теперь есть эта новейшая функция, представленная aux-branch. Теперь вернемся к вашему локальному (Git), действуйте следующим образом:
git checkout main
или мастер
git branch -D aux-branch
-> Удалить тоже в вашем локальном \
git remote update --prune
-> он делает и выборку, и обновление на ваш пульт.
git pull
-> получать последние обновления с удаленного GHub.
git checkout dev
git rebase dev main
или мастер -> (перебазировать или объединить)
git push -u origin dev
-> лазить по обновлениям в удаленную ветку
Теперь перейдите на свой GitHub, перезагрузите страницу, перейдите в свою ветку dev, вы увидите, что ваша ветка dev такая же, как ваша основная / главная ветка ...
Итак, это все. Надеюсь, я помог вам, ребята ...
Если в сообщении говорится, что вы «n» фиксируете за мастером, вы можете использовать опцию «git sync» в черепаховом git. Где вам будет предложено выбрать ветку (цель), из которой вы хотите извлечь изменения. Нажмите «Потянуть». Это перенесет все изменения из удаленной (главной/любой целевой ветки) в вашу ветку разработки. После извлечения нажмите «Отправить», чтобы отправить все синхронизированные изменения из вашей локальной ветки разработки в удаленную ветку разработки на git.
#черепаха
В intelliJ вы можете выполнить следующие простые шаги: проверить свою ветку и получить последние коммиты из имени основной/ветки. Объединить эти изменения в вашей ветке. -> vcs -> git -> слияние изменений (происхождение/основное)
нажмите вашу ветку на удаленный
Это должно сделать вашу ветку такой же, как цель
Использование
git cherry-pick <commit-hash>
Так что это выберет ваш задний коммит для git локации, на которой вы находитесь
Если ветка находится за мастером, удалите удаленную ветку. Затем перейдите в локальную ветку и запустите:
git pull origin master --rebase
Затем снова нажмите ветку в начало:
git push -u origin <branch-name>