Можете ли вы объяснить, что не так с этим рабочим процессом?
$ git init --bare bare
Initialized empty Git repository in /work/fun/git_experiments/bare/
$ git clone bare alice
Cloning into alice...
done.
warning: You appear to have cloned an empty repository.
$ cd alice/
$ touch a
$ git add a
$ git commit -m "Added a"
[master (root-commit) 70d52d4] Added a
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to '/work/fun/git_experiments/bare'
Не git push
всегда подталкивать к хранилищу, из которого я клонировал?
Ответы:
Да, проблема в том, что в «голых» коммитах нет. Это проблема только с первым коммитом, если вы создаете репо в порядке (bare, alice). Попробуйте сделать:
Это будет необходимо только в первый раз. После этого должно работать нормально.
Как отметил Крис Джонсен, у вас не будет этой проблемы, если ваш push.default был настроен. Мне нравится upstream / tracking.
источник
sudo apt-get upgrade git-core
иsudo apt-get upgrade git
думаю, что обновление не требуется.git --version
возвращает 1.7.3.1. Есть идеи, чего не хватает? Я признаю, что в настоящее времяapt-get update
не работает для меня, но это не так давно.matching
; может быть, выpush.default
установилиupstream
/tracking
(илиcurrent
) в вашем~/.gitconfig
?git push origin master:master
сделать это явным. Если это не сработает, проверьте, в какой ветке вы находитесь:git branch
возможно, вы не сделали первый коммит или вы сделали этот коммит на ветке, отличной от master.Если ты:
это подтолкнет к голому репо.
Похоже, ваше репо Алиса не отслеживает правильно.
Это покажет пульт по умолчанию и филиал.
если ты
Вы должны начать отслеживать этот пульт и филиал. Я не уверен, что этот вариант всегда был в Git.
источник
Ответ на этот связанный вопрос дал мне решение ... это была просто глупая ошибка:
Не забудьте совершить сначала!
https://stackoverflow.com/a/7572252
Если вы еще не завершили локальное репо, вам нечего нажимать, но сообщение об ошибке Git, которое вы получаете, не слишком вам помогает.
источник
это канонический способ подтолкнуть все к новому голому хранилищу.
Другой способ сделать то же самое - создать новый, не обнаженный репозиторий, а затем создать голый клон с
затем используйте
в оригинальном (не голом) хранилище.
источник
git push --all ../test_repo
URLПопробуйте это в своем
alice
хранилище (перед нажатием):Или настройте его как значение по умолчанию для вашего пользователя с
git config --global …
.git push
по умолчанию используется дляorigin
репозитория (который обычно является репозиторием, из которого вы клонировали текущий репозиторий), но он по умолчанию не выдвигает текущую ветвь - он по умолчанию выталкивает только те ветки, которые существуют как в исходном репозитории, так и в целевом репозитории.push.default
Переменной конфигурации (см ГИТ-конфигурации (1) ) управления , чтоgit push
будет толкать , когда он не дал никаких «refspec» аргументы (то есть что - то после имени репозитория). Значение по умолчанию дает поведение, описанное выше.Вот возможные значения для
push.default
:nothing
Это заставляет вас предоставить «refspec».
matching
(по умолчанию)Это выталкивает все ветви, которые существуют как в исходном хранилище, так и в целевом хранилище.
Это полностью независимо от ветви, которая в настоящее время проверена.
upstream
илиtracking
(Оба значения означают одно и то же. Последнее не рекомендуется, чтобы избежать путаницы с ветвями «удаленного отслеживания». Первое было введено в 1.7.4.2, поэтому вам придется использовать последнее, если вы используете Git 1.7.3.1. )
Они выдвигают текущую ветвь к ветке, определенной ее «восходящей» конфигурацией.
current
Это подталкивает текущую ветку к ветви с тем же именем в целевом хранилище.
Последние два заканчиваются тем, что они одинаковы для общих случаев (например, работа на локальном мастере, который использует origin / master в качестве его восходящего потока), но они отличаются, когда локальная ветвь имеет имя, отличное от ее «восходящей» ветки:
С
push.default
равнымupstream
(илиtracking
), толчок будет идти вorigin
«s основной ветви. Когда оно равноcurrent
, толкающий бы кorigin
«s QuickFix филиал.matching
Установка обновитbare
«s мастер в вашем сценарии , когда он был создан. Чтобы установить это, вы можете использоватьgit push origin master
один раз.Однако
upstream
настройка (или, может бытьcurrent
) выглядит так, как будто она лучше соответствует тому, что вы ожидаете, поэтому вы можете попробовать ее:(Опять же, если вы все еще используете Git до 1.7.4.2, вам нужно будет использовать
tracking
вместоupstream
).источник
Я использую git-клиент SourceTree и вижу, что их начальная команда commit / push:
источник