Выдвижение только одной папки для удаленного репо - PullRequest
16 голосов
/ 03 мая 2011

Я использую Git 1.7.4.1.Я хочу отправить коммиты, которые я сделал в одной папке, в мое удаленное хранилище.Как отправить изменения только из одной папки в мое удаленное хранилище?Во всей документации, которую я нашел, указано только, как протолкнуть все репо ...

davea-mbp2:systems davea$ git push origin trunk
Password: 
To http://dalvarado@mydomain.com/systems.git
 ! [rejected]        trunk -> trunk (non-fast-forward)
error: failed to push some refs to 'http://dalvarado@mydomain.com/systems.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

Конфликты, о которых я предупрежден, не относятся к папке, которую я хочу протолкнутьЛюбая помощь приветствуется, - Дэйв

Ответы [ 4 ]

4 голосов
/ 03 мая 2011

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

2 голосов
/ 03 мая 2011

Git не похож на подрывную деятельность.Короткий ответ: вы не можете.

Вы должны рассмотреть возможность изменения вашего изменения (только одного соответствующего) по отношению к дистанционному

git rebase -i origin/trunk

, чтобы вы начали.Не забудьте прочитать комментарии и инструкции по пути.Существует также man git-rebase конечно.

В конце концов, когда вы удовлетворены результатом, вы можете либо создать новую ветку оттуда

 git checkout -b rebased HEAD

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

Давите громко, тогда будьте проще с

 git push origin trunk
1 голос
/ 03 мая 2011

единицей работы git является коммит. Если вы хотите отправить изменения в один каталог, но не в другие, эти изменения должны быть отдельными коммитами.

Если вы еще не отправили эти изменения в другое место, вы можете попробовать интерактивную перебазировку, чтобы ваши коммиты выглядели так, как вам нужно. См. страницу руководства git-rebase и этой главы в книге сообщества Git для получения более подробной информации.

0 голосов
/ 03 мая 2011

Ошибка, о которой вы сообщаете, не сообщает о конфликтах - конфликты возникают только локально при слиянии (например, как часть git pull).Эта ошибка просто отказывается обновлять удаленную ветку с вашим коммитом, так как ваш коммит не включает историю ветки, на которую вы пытаетесь нажать.Как правило, это означает, что кто-то другой отправил в эту ветку какую-то дивергентную разработку, и вам нужно вытащить или перебазировать - здесь есть еще кое-что: Как работает git, когда два пира одновременно переводят изменения на один и тот же удаленный

Однако, чтобы ответить на ваш вопрос напрямую, коммиты всегда представляют полное состояние дерева, поэтому вам просто нужно создать коммит, в котором есть только изменения в интересующем подкаталоге.Просто перейдите в этот подкаталог и используйте git add для размещения файлов, которые вы там изменили.Затем, когда вы фиксируете, убедитесь, что вы не используете параметр -a, в противном случае все изменения в вашем хранилище будут внесены в этот коммит.

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