git push отклонен, возможно из-за ребаз - PullRequest
1 голос
/ 26 сентября 2019

У меня есть автоматическое задание Дженкинса, которое просто выполняет следующее:

  • извлечение из remoteA
  • вставка в remoteB

remoteA - это пульт, на котором разработчики фактически нажимают свой код.

remoteB никогда не затрагивается вручную, он получает обновления только через этот автоматизированный Job.

Некоторое время он работал хорошо, но теперьЯ получаю Updates were rejected because the tip of your current branch is behind its remote counterpart. при попытке ввести remoteB

Насколько я знаю, это происходит, когда

  • (a) remoteB содержит изменения, которые remoteA не делаетне содержит -> Я думаю, что это невозможно, потому что ни один человек, и никакая другая Дженкинс Джоб не трогает remoteB
  • (b) кто-то сделал rebase на remoteA.-> Поскольку я не профессионал в Git, я очень не уверен, как справиться с этим сценарием.Надеюсь, что кто-то здесь может помочь.

1 Ответ

1 голос
/ 26 сентября 2019

Если вы сделали rebase, который изменил историю, чтобы вы не могли отправить ее на пульт, если вы не хотите перезаписать и изменить содержимое вашего хранилища.

Если вы все еще хотите выдвинуть контент, вы должны использовать -f

# FORCE overwrite of old content with the new result of you rebase 
git push -f  

В вашем случае, когда контент обрабатывается Jenkins, ребаз может быть хорошей причиной, почемуперестал работать.


Как узнать, произошла ли перебазировка

Проверить разницу между двумя ветками (локальная или удаленная)

# fetch all remotes if you have multiple ones
git fetch --all

# check the diff between the 2 branches (2 ..)
git diff localBranch..origin/remoteBranch


# check the diff between the 2 branches (3 ..)
git diff localBranch...origin/remoteBranch 

вы можетеподробнее о git diff
Как показать незафиксированные изменения в Git

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...