Точная `svn export` эквивалентная команда для git? - PullRequest
6 голосов
/ 30 июня 2011

Не существует точной svn export эквивалентной команды для git?В самом деле?

Осторожно: это не повторяющийся вопрос.То есть я уже знаю и проверил эти команды:

  • git clone --depth 1 <- Все еще загружает папку .git. </li>
  • git checkout-init <- Не работает дляудаленное репо, оно работает с рабочей копией (поэтому вам нужно сначала клонировать). </li>
  • git archive <- это было бы идеальным решением, поскольку у него есть аргумент <code>--remote, но у него только 2возможные форматы: tar или zip, поэтому мне нужно распаковать / разархивировать после загрузки, и для этого мне нужна труба (|), но я на Windows !!(не * n? x)
  • git clone --bare <- я все еще не знаю, какого черта это, но это не то, что мне нужно. </li>

Пожалуйста, просветите меня, этоесть реальная svn export замена в git?

Ответы [ 7 ]

13 голосов
/ 30 июня 2011
10 голосов
/ 30 июня 2011

Вопрос "как мне выполнить экспорт в стиле svn с помощью git?" это все равно что спросить «Как я могу поменять шины на моем баскетболе?». Вы не можете, но это не вина баскетбола. Да, он резиновый и наполнен воздухом, но на этом сходство заканчивается.

Вам нужно только «экспортировать» с помощью svn, поскольку он загрязняет каждый отдельный подкаталог с помощью каталога .svn. Git этого не делает, так что тебе это действительно не нужно. Клон - это экспорт, только с одним каталогом в корневом каталоге, в котором живет весь бизнес хранилища.

Самое простое - клонировать репо, а затем просто удалить каталог .git с верхнего уровня репо. Сделайте это, и это больше не репо, это просто автономный каталог файлов.

Или, знаете, игнорируйте git все вместе и просто используйте файлы, которые вы клонировали. Это тоже работает.

9 голосов
/ 30 июня 2011

Просто избавьтесь от хранилища в рабочей копии.

git clone remote
rm -Rf .git

(В Windows это rd /s /q. Спасибо за подсказку @Bruno.)

4 голосов
/ 01 ноября 2013

На некоторых хостингах, таких как GitHub, вы можете сделать точные svn export.

Пример:

svn export https://github.com/GNOME/banshee/branches/master

Даже частично! (некоторая часть хранилища)

Пример:

svn export https://github.com/liferay/liferay-portal/branches/6.1.x/tools

Для вашего собственного хранилища вы должны создать некоторое хранилище GitHub и добавить его в качестве удаленного:

git remote add github https://github.com/<user>/<repo>.git

затем

git push github <branch>

Теперь вы можете сделать частичное оформление заказа, как указано выше.

3 голосов
/ 01 июля 2011

Для вашего Я до сих пор не знаю, какого черта это : git clone --bare клонирует хранилище без рабочей копии.Обычно это делается в центральном хранилище, чтобы минимизировать использование дискового пространства.

Бруно / Кинг Хруст имеют лучший ответ.Хотя вы можете использовать git bash / cygwin, чтобы позволить вам конвейерную передачу, если вам нужен однострочный.

0 голосов
/ 06 сентября 2012

Re your point, git archive <- это было бы идеальное решение ... но оно имеет только 2 возможных формата: tar или zip </strong>, вы можете добавлять новые форматы, используя документацию из раздела EXAMPLES в разделе git-archive(1) справочная страница:

   git config tar.tar.xz.command "xz -c"
       Configure a "tar.xz" format for making LZMA-compressed tarfiles.
       You can use it specifying --format=tar.xz, or by creating an output
       file like -o foo.tar.xz.

Хотя «на окнах» обычно считается препятствием для выполнения многих задач, с небольшой дополнительной работой, вы можете почти догнать людей, работающих под управлением других операционных систем, используя такие программы, как Cygwin или MKS Toolkit .

Если после подтверждения того, что какая-либо необходимая вам команда доступна из вашей оболочки, такая команда git config … все еще не работает для вас, тогда вам, возможно, следует опубликовать дополнительную информацию о вашей конфигурации в вопросе на SuperUser.com .

0 голосов
/ 14 февраля 2012

С https://stackoverflow.com/a/160719/43597

git checkout-index -a -f --prefix=/destination/path/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...