Основной вопрос: как мне отделить репозиторий git от источника, из которого он был клонирован?
git branch -a
показывает:
* master remotes/origin/HEAD -> origin/master
, и я хочу удалить все сведения о происхождении и связанных ревизий.
Более длинный вопрос: я хочу взять существующее репозиторий Subversion и сделать из него несколько более мелких репозиториев git. Каждый из новых репозиториев git должен иметь полную историю только соответствующей ветки. Я могу сократить репо только до нужного поддерева, используя:
git filter-branch --subdirectory-filter path/to/subtree HEAD
, но полученное репо по-прежнему содержит все ревизии поддеревьев, которые теперь отброшены в ветке origin/master.
Я понимаю, что могу использовать флаг -T для git-svn, чтобы в первую очередь клонируйте соответствующее поддерево репозитория Subversion. Я не уверен, что это будет более эффективно, чем более поздний запуск нескольких экземпляров git filter-branch --subdirectory-filter
на копиях репозитория git, но в любом случае я бы все равно как разорвать связь с источником.
Довольно просто:
git remote rm origin
Что касается вопроса filter-branch
— просто добавьте - prune-empty
в свою команду ветвления фильтра и он удалит любую ревизию, которая на самом деле не содержит никаких изменений в полученном репо:
git filter-branch --prune-empty --subdirectory-filter path/ в/subtree HEAD
Удалите существующий источник и добавьте новый источник в каталог вашего проекта
> $ git remote show origin> $ git remote rm origin> $ git add.> $ git commit -m "First commit"> $ git remote add origin Copied_origin_url> $ git remote показать origin> $ git push origin master
0
Как удалить origin/master в Git
Я не могу удалить origin/master
из моего сервер. Понятия не имею, почему.
Сообщение об ошибке следующее
remote: error: по умолчанию удаление текущей ветки запрещено, потому что nextremote: error: 'git clone' не приведет к извлечению какого-либо файла, что вызовет путаницу. remote: error: remote: error: Вы можете установить переменную конфигурации receive.denyDeleteCurrent как remote: error: 'warn' или 'ignore' в удаленном репозитории, чтобы разрешить удаление theremote: error: текущая ветка с предупреждением или без него. удаленный: ошибка: удаленный: ошибка: чтобы подавить это сообщение, вы можете установить его на «отказ». удаленный: ошибка: отказ от удаления текущей ветки: refs/Heads/master на acanzian@elab.ecn.purdue.edu:/export /главная/а/elabshare/git/ID-check. мерзавец! [удаленный отклонен] главный (удаление текущей ветки запрещено) ошибка: не удалось отправить некоторые ссылки на 'acanzian@elab.ecn.purdue.edu:/export/home/a/elabshare/git/ID-check.git'
Нет, я не использую Github .
Забавный факт: даже удаленные репозитории находятся в ветке. Вам отказывают, потому что вы пытаетесь удалить ветку, которую ваш источник в настоящее время «проверил».
Если у вас есть прямой доступ к репо, вы можете просто открыть оболочку без repor и используйте старый добрый git branch
, чтобы узнать, в каком источнике ветки сейчас находится. Чтобы изменить его на другую ветку, вы должны использовать git symbolic-ref HEAD refs/heads/another-branch
.
Если вы используете такую службу, как Github или Gitorious, вам придется использовать пользовательский интерфейс, который предоставляет инструмент, чтобы внести изменения (см. этот ответ, чтобы узнать, как это сделать в общих инструментах).
Вместо фактического удаления мастера с сервера вы можете заменить его следующим образом:
git push origin otherbranch: master -f
Это заменит master содержимым otherbranch, но он все равно будет называться master на пульте дистанционного управления. А затем вы можете проверить мастер как мастер в своем локальном.
2