Что я могу сделать, чтобы решить "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
  1. Клонируйте свою вилку:

    • git clone git@github.com:YOUR-USERNAME/YOUR-FORKED-REPO.git
  2. Добавьте удаленный из исходного репозитория в ваш разветвленный репозиторий:

    • cd into/cloned/fork-repo
    • git remote add upstream git://github.com/ORIGINAL-DEV-USERNAME/REPO-YOU-FORKED-FROM.git
    • git fetch upstream
  3. Обновление вашего форка из исходного репо, чтобы не отставать от их изменений:

    • 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
  1. мастер проверки git
  2. мастер происхождения git pull
  3. git checkout BranchNameBehindCommit (ваша ветка)
  4. мастер слияния git
  5. git push origin ветка BehindCommit

простое исправление

  1. клонировать репозиторий в вашу систему

    git clone repositoryUrl

  2. Перейдите в ветку, в которой есть коммиты за основной веткой.

    git checkout branch_name

  3. Перебазируйте ветку на master

    git rebase -i origin/master

  4. откроется редактор кода vi, введите :wq и нажмите Enter

    :wq

  5. Наконец, отправьте изменения в ветку, теперь не будет никаких коммитов.

    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 rebase origin master также.

Использование

git cherry-pick <commit-hash>

Так что это выберет ваш задний коммит для git локации, на которой вы находитесь

Если ветка находится за мастером, удалите удаленную ветку. Затем перейдите в локальную ветку и запустите:

git pull origin master --rebase

Затем снова нажмите ветку в начало:

git push -u origin <branch-name>