Как указать локальный мастер на источник оригинала без зафиксированных файлов после создания репо? - PullRequest
0 голосов
/ 14 октября 2018

Я только что создал свое git-репо на git-сервере (Bitbucket, GitHub и т. Д.), И я хочу связать свой локальный мастер с моей основной веткой master. Я пока не хочу добавлять какие-либо текущие файлы, которые есть в моем проекте .

В папке проекта я начинаю с добавления своего пульта:

$ git init
$ git remote add origin git@xxx/project.git

Затем я хочу, чтобы моя локальная основная ветвь отслеживала мою удаленную главную ветвь:

$ git push --set-upstream origin master 
error: src refspec master does not match any.  
error: failed to push some refs to 'git@xxx/project.git'

Я также пытаюсь:

$ git branch --set-upstream-to=origin/master master
fatal: branch 'master' does not exist

Что ожидается, учитывая, что основная ветвь не существует.Давайте создадим его тогда:

$ git branch master
fatal: Not a valid object name: 'master'.

Кажется, что я не могу создать ветку с именем 'master' ...

С учетом сказанного, как я могу решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 14 октября 2018

Git пытается защитить вас от опечаток, чтобы обойти проверки и установить конфигурацию напрямую,

git config branch.master.remote origin
git config branch.master.merge refs/heads/master
0 голосов
/ 14 октября 2018

Относительно «синхронизации данных с удаленным репозиторием»: пока ваш локальный репозиторий пуст (например: нет коммита, нет каталога, нет файла), вам не нужно предпринимать никаких действий с удаленным.

git  push --set-upstream origin master

будет работать так же хорошо после того, как вы на самом деле создали свой первый коммит.


При этом я также взял за привычку создавать первый пустой коммит как "корневой коммит""из моих репозиториев.

Это позволяет упростить операции, например, когда я понимаю, что добавил слишком много файлов в свой первый фактический коммит.

например:" упс, удалить secret.conf, добавить"secret.conf" in .gitignore ", теперь можно сделать с обычным rebase -i

0 голосов
/ 14 октября 2018

Вы должны иметь готовый коммит, чтобы можно было перейти в любую ветку.Учитывая, что вы не хотите добавлять какой-либо файл в свой первый коммит, просто выполните пустой коммит с параметром --allow-empty:

$ git commit --allow-empty -m "Initial empty commit"

Теперь вы можете успешно выдвинуть свою основную ветку:

$ git push --set-upstream origin master
Counting objects: 2, done.
Writing objects: 100% (2/2), 175 bytes | 175.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To xxx/project.git
* [new branch]      master -> master
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...