Публикация HEAD ветви без всех объектов предыдущего коммита - PullRequest
3 голосов
/ 26 августа 2009

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

В частности, я хотел бы создать локальную ветку "pub", внести в нее некоторые изменения (возможно, скрыть конфиденциальную информацию) и опубликовать ветку "pub".

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

Как этого достичь?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 26 августа 2009

Ветвь должна экспортировать всю свою историю.

Решение, на мой взгляд, состоит в том, чтобы создать новый репозиторий git с вашей последней проверкой в ​​нем. Затем добавьте этот репозиторий как удаленный из вашего текущего репозитория. Выполняйте свою собственную работу, синхронизируя производство с dev и используя git patch apply или git rebase -i, чтобы перенести вещи в производство.

Это сохранит вашу личную историю развития, которую вы не хотите раскрывать при каждом появлении.

2 голосов
/ 26 августа 2009

Взгляните на этот вопрос .

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

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

Но пока мы занимаемся этим, если вы не хотите раскрывать историю управления версиями, почему бы просто не опубликовать код в виде тарбола с номером версии, нет причин перетаскивать в него Git

0 голосов
/ 27 августа 2009

Я думаю, что я пытаюсь согнуть Git, чтобы делать то, что он не должен обрабатывать:)

Самое простое решение, которое я придумал:

1 - Создать «публичный проект» ветки master. 2. Делайте все изменения, чтобы сделать ваш код доступным для публикации, то есть скрывать пароли и тому подобное. Последующие слияния будут хорошо обрабатывать эти изменения. 3 - Когда все будет готово, выполните rsync открытый проект с мастером другого git-репозитория, отслеживающего удаленный репозиторий. 4 - Зафиксируйте все изменения и отправьте их в удаленный репозиторий.

Мне интересно, можно ли заменить другой репозиторий веткой с именем "public", которая никогда не получает слияния из других веток, а только сливается обратно с ветками "public-draft". Это позволяет объединять изменения, внесенные другими людьми в публичный репозиторий.

Спасибо всем.

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