Как я и предлагал в комментариях, небольшой скрипт для отправки по одному коммиту за раз может сработать.С точки зрения сервера это выглядело бы так, как если бы вы работали над проектом, постоянно коммитировали и давили.
В bash это должно работать:
for c in $(git log --pretty=format:"%h" --reverse --first-parent origin/master..master); do
git push origin $c:master
done
--first-parent
необходимо, чтобыэто не ломается при слиянии.Я попробовал это локально, и вот что я получил:
tobi@TOBIAS-PC:/mnt/d/test/git/r$ git log --oneline --graph --decorate
* d2d3264 (HEAD -> master) asdaskdj
* 9171144 Merge branch 'something'
|\
| * f85e25e (something) opjsdfk
| * 069b6f1 bla
* | f3c54df kjsdaflk
* | ca354e5 kjsdaflk
|/
* 6765170 asdf
* c1873cc (origin/master) initial commit
tobi@TOBIAS-PC:/mnt/d/test/git/r$ git log --pretty=format:"%h" --reverse --first-parent origin/master..master
6765170
ca354e5
f3c54df
9171144
d2d3264
tobi@TOBIAS-PC:/mnt/d/test/git/r$ for c in $(git log --pretty=format:"%h" --reverse --first-parent origin/master..master); do git push origin $c:master; done
Counting objects: 3, done.
Writing objects: 100% (3/3), 235 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ../b
c1873cc..6765170 6765170 -> master
Counting objects: 3, done.
Writing objects: 100% (3/3), 244 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ../b
6765170..ca354e5 ca354e5 -> master
Counting objects: 3, done.
Writing objects: 100% (3/3), 244 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ../b
ca354e5..f3c54df f3c54df -> master
Counting objects: 8, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (8/8), 762 bytes | 0 bytes/s, done.
Total 8 (delta 0), reused 0 (delta 0)
To ../b
f3c54df..9171144 9171144 -> master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 274 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ../b
9171144..d2d3264 d2d3264 -> master
tobi@TOBIAS-PC:/mnt/d/test/git/r$ git log --oneline --decorate --graph
* d2d3264 (HEAD -> master, origin/master) asdaskdj
* 9171144 Merge branch 'something'
|\
| * f85e25e (something) opjsdfk
| * 069b6f1 bla
* | f3c54df kjsdaflk
* | ca354e5 kjsdaflk
|/
* 6765170 asdf
* c1873cc initial commit
Возможно, вы также захотите добавить спящий режим на случай, если сервер будет перегружен всеми этими нажатиями, чтобы дать ему некоторое время для обработки всех этих данных;Я действительно не знаю, делает ли он что-то большее, чем просто сохранение его на диске, он может проиндексировать это или что-то в этом роде.