Можно ли вставить git-репозиторий в разделы?
У меня сейчас очень медленное соединение, и мне нужно вставить новую ветку на git-сервер моей компании. С SVN я могу фиксировать / отправлять файлы на удаленный сервер SVN по одному, если захочу. Раньше, когда у меня было медленное соединение, я мог загружать папку за раз, и это работало отлично. Я уверен, что может использовать что-то подобное в Git.
2 ответа
Когда вы делаете git-push(1), руководство говорит:
<src>
часто это название ветви, которую вы хотите нажать, но это может быть любое произвольное "выражение SHA-1", такое как master~4 или HEAD (см. gitrevisions(7)).
В результате вы должны быть в состоянии выдвинуть отдельные коммиты до удаленного, организовав их в хронологическом порядке, а затем указав каждый из них в подробном refspec. Например:
# Get all commits not in remotes/origin/master and
# sort in chronological order.
commits_list=$(
git log --oneline --reverse refs/remotes/origin/master..HEAD |
awk '{print $1}'
)
# Push each commit one-by-one to origin/master.
for commit in $commits_list; do
git push origin $commit:refs/heads/master
done
Я проверил это локально, и, кажется, работает как задумано. Дайте ему попытку; если ничего другого, это укажет вам правильное направление.
Если ваша ветвь состоит из множества небольших коммитов, добавляющих до одного большого изменения, вы можете добиться этого, поэтапно увеличивая коммиты. Возможно, создайте новую ветку, начиная с той точки, в которой ваш код отличается от кода на сервере компании, затем поэтапно извлекайте диапазоны коммитов из вашей ветки и нажимайте после каждого диапазона.
Но выдвигать отдельные папки / файлы - я почти уверен, что это невозможно: это скорее противоречит требованию git, чтобы коммит был атомарным объектом.