У меня просто был интересный опыт игры. Я работал единственным разработчиком в своем филиале my-branch
, который я недавно разветвил из филиала моего товарища по команде: her-branch
. Я уже успешно нажал несколько коммитов в свой филиал. Но когда я пошел, чтобы толкать мою последнюю ветку, то произошло следующее:Git Time Travel
$ git push
To [email protected]/repo.git
! [rejected] her-branch -> her-branch (non-fast-forward)
error: failed to push some refs to '[email protected]/repo.git'
hint: Updates were rejecetd because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes.
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Я думал, что это было очень странно, что даже если я толкал на my-branch
сообщения сказали, что это не удалось из-за her-branch
. Я не знал, что был неправ, но я вытащил, как предложил сообщение:
$ git pull
Already up-to-date.
Я хотел бы подтвердить, я был на моей ветке ...
$ git checkout my-branch
Already on 'my-branch'
Your branch is up-to-date with 'origin/my-branch'.
Так наконец, я заставил толчок.
$ git push -f
Total 0 (delta 0), reused 0 (delta 0)
To [email protected]/repo.git
+ 9b3232c..d35fe86 her-branch -> her-branch (forced update)
my-branch
Это подтолкнуло успешно и обновила пульт. Но он отправил her-branch
вовремя, со всеми моими товарищами по команде, так как я удалился от нее. Ее история полностью исчезла с дистанции.
К счастью, она не тянула и смогла надавить на свою ветку, чтобы восстановить последнюю версию своего кода, но я довольно смущен.
Не могли бы вы объяснить, что здесь произошло?
tldr: 'git push' не толкает вашу ветку, она толкает ** все ** ваших ветвей. Вы не должны этого делать, вы перезаписали новую версию своей ветви своей устаревшей местной версией. Убедитесь, что 'push.default' установлен правильно. – meagar