Лучшего вариант
Вероятно, чистейший, наименее запутанный и безопасный способ впихнуть в вашем без голого удаленного хранилища, чтобы нажать на выделенные ветви в пульте дистанционного управления, которые представляют свои портативные ветви.
Давайте рассмотрим простейший случай и предположим, что у вас есть только одна ветвь в каждом репо: master. Когда вы нажимаете на дистанционное репо с вашего ноутбука, вместо того, чтобы нажимать master -> master, нажимайте master -> laptop-master (или аналогичное имя). Таким образом, push не влияет на текущую проверенную ведущую ветвь в удаленном репо. Для того, чтобы сделать это из ноутбука, команда довольно проста:
git push origin master:laptop-master
Это означает, что местный мастер филиал будет выталкиваться в филиал под названием «ноутбук-мастер» в удаленном хранилище. В вашем удаленном репо вы будете иметь новую ветку с именем «laptop-master», которую вы сможете слить в свой удаленный мастер, когда будете готовы.
Альтернативного вариант
Также можно просто нажать мастер -> мастер, но нажав на данный момент извлеченной ветви, не голого репо, как правило, не рекомендуется, так как это может привести к путанице, если вам не понимаю, что происходит. Это связано с тем, что нажатие на отмеченную ветку не обновляет дерево работы, поэтому проверка git status
в выгруженной ветке, которая была нажата, покажет точно противоположные различия, как то, что было недавно нажато. Это было бы особенно запутанным, если бы дерево работ было грязным до того, как нажим был сделан, что является большой причиной, почему это не рекомендуется.
Если вы хотите попробовать просто толкая мастер -> мастер, то команда просто:
git push origin
Но когда вы возвращаетесь к удаленному репо, вы, скорее всего, захотите сделать git reset --hard HEAD
к получить дерево работы в синхронизации с содержимым, которое было нажато. Это может быть опасно, потому что если есть uncommitted Изменения в дереве удаленной работы, которые вы хотели сохранить, уничтожат их. Убедитесь, что вы знаете, каковы последствия этого, прежде чем попробовать, или, по крайней мере, сделать резервную копию в первую очередь!
EDIT С Git 2.3 вы можете использовать «push-to-deploy» git push: https://github.com/blog/1957-git-2-3-has-been-released. Но нажатие на отдельную ветвь, а затем слияние, как правило, лучше, поскольку оно действительно слияние (следовательно, работает с незафиксированными изменениями, как это делает merge).
related: http://stackoverflow.com/questions/12265729/git-config-receive-denycurrentbranch – prusswan
имеют 2 удаленных РЕПО, голые и обычные, и используют крючки. похоже на хлопот, но согласно [git ready] (http://gitready.com/advanced/2009/02/01/push-to-only-bare-repositories.html) и [официальная git wiki] (https : //git.wiki.kernel.org/index.php? title = Git_FAQ & oldid = 23811 # Why_won.27t_I_see_changes_in_the_remote_repo_after_.22git_push.22.3F), вы должны ** просто нажать на голое репо **. вероятно, именно поэтому большинство хостов git repo (например, GitHub, Bitbucket) включают в себя перехваты после приема, поэтому вы можете отправить POST на URL-адрес вашего сервера, который запускает скрипт, который выполняется, например, 'git pull github master'. –