Как сбросить Git-репозиторий и проверить источники из SVN заново? - PullRequest
1 голос
/ 11 марта 2012

У меня есть основной репозиторий в SVN, который я синхронизирую с «клоном» в Git / GitHub. Каждый раз, когда я что-то делаю в SVN, я запускаю на консоли Git следующие команды:

git svn rebase
git push --force git@github.com:.../

Я часто допускаю ошибки при работе с этой настройкой (кто знает, как ...). Это приводит к большому количеству ошибок и слияний, краже, фиксации, добавлению и т. Д., Которые я не могу устранить из-за недостатка знаний о Git. Поэтому мне интересно, как я могу отменить все нежелательные изменения в моем Git-репозитории, переписав все так, как это происходит в транке SVN? Я только хочу посвятить себя SVN. Git / GitHub должен быть только копией.

Я понял, что обходной путь для моей текущей проблемы заключается в следующем:

git svn rebase
git add .
git rebase --continue
git push --force git@github.com:.../

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

git svn "override and update"

Ответы [ 2 ]

3 голосов
/ 17 марта 2012

Вы сказали: «Я только хочу посвятить себя SVN». поэтому я думаю, что вам стоит взглянуть на svn-support GitHub, который был обновлен несколько месяцев назад, чтобы также поддерживать push непосредственно из svn.

Пример кода от GitHub ;

$ echo '# Important change' >> branches/wip/README.md
$ svn commit -m 'Made an important change'
Sending        branches/wip/README.md
Transmitting file data .
Committed revision 27.

... и это работает;) При использовании этого вам не нужно использовать git.

1 голос
/ 19 марта 2012

Похоже, вы просто хотите использовать github в качестве облачной резервной копии, верно?

  • Очистите локальное хранилище, чтобы избавиться от ошибочных изменений, которые вы сделали (Я предполагаю --stdlayout для клона git-svn).
  • Я предлагаю создать новый репозиторий (скажем, mybackup) на github через их веб-интерфейс.

Команды будут:

$ git reset --hard trunk (clean local tree)
$ git remote add mybackup git@github.com:<username>/mybackup.git (add github remote)
$ git push -u mybackup master (push to github)

Пример:

Я попробовал следующее в git-svn-управляемом репозитории (foo.git-svn), который у меня сейчас есть.

$ cd foo.git-svn
$ git reset --hard trunk
$ git svn rebase
$ cd ..
$ mkdir tmp.git && cd tmp.git && git init --bare
$ cd ../foo.git-svn
$ git remote add tmp ../tmp.git
$ git push tmp master

Это подтолкнуло основную ветвь моего репозитория git-svn к новому, чисто репозиторию git.

...