Может кто-нибудь объяснить мне (или привести меня к хорошей ссылке) следующую проблему?
Я знаю, что ниже приведена правильная команда push, которую я должен использовать:
git push origin refs/heads/master:refs/heads/master
(I also know that it has short forms, like:
git push origin master:master
or
git push origin master)
Однако однажды я сделал 2 следующих толчка (по ошибке):
(1) git push origin refs/heads/master:refs/remotes/heads/master
(2) git push origin refs/heads/master:refs/remotes/origin/master
git сообщает об ошибке в обеих командах, хотя в (1) у меня нет удаленного имени "глав ".
Мой первый вопрос: что git отправляет в удаленный репозиторий в этих случаях? Вредят ли они моему удаленному хранилищу?
Второй вопрос: в соответствии с http://progit.org/book/ch9-3.html все, что в разделе "refs / remotes", является удаленными ссылками
которые должны знать идентификатор последнего коммита в соответствующем удаленном филиале при последней передаче сервера. Это только для этого
(например, только для информации), использует ли какая-либо команда git эти ссылки?
Обновление с моими выводами о команде (2)
Я снова тщательно проверил поведение команды (2):
- резервное копирование удаленного хранилища
- сделать (2)
- сравнить два репозитория (текущий и резервный)
Я нашел различия в текущем (тот, который выполняется командой (2))
- в папке «objects» создано 2 новых файла: один - файл .pack, а другой - файл .idx
- в папке "refs", новый refs создал "remotes / originins / master"
Я заметил, что вывод команды (2) был
Counting objects: 842, done.
Compressing objects: 100% (337/337), done.
Writing objects: 100% (651/651), 336.30 KiB, done.
Total 651 (delta 243), reused 612 (delta 218)
To file:///data/resto/central-repo
* [new branch] master -> origin/master
Теперь я сделал еще один тест:
- Клонирование удаленного репо в 2 локальных репо
- В одном локальном репо я внес изменения в файл, commit, push (мастер git push origin)
В другом локальном репо
- Я внес изменения в файл, зафиксировал
Нажмите с
git push origin master: master
Я получил сообщение об ошибке от git: "...! [rejected] master -> master (non-fast-forward)..."
То, что я ожидаю
Затем я выполнил команду (2), и в результате получилось то, что я упомянул выше.
Так что очевидно (2) отличается от git push origin master.
Что означает папка "refs" in the remote
хранилище? Команда (2) создает новые "ссылки" в
удаленное хранилище, к чему оно относится?