fatal: Неправильне ім'я об'єкта: 'master'


182

У мене є приватний сервер під управлінням git 1.7 Коли я

git init 

папку, в якій не створюється головна гілка. Причина, коли я це роблю:

git branch 

він нічого не перераховує. Коли я роблю:

git --bare init

він створює файли. Коли я друкую

git branch master 

він говорить:

fatal: Not a valid object name: 'master'.

Той самий результат при спробі генерування нової гілки:git branch newbranch
Sören

Відповіді:


281

Коли я git initпапку, вона не створює головну гілку

Це правда і очікувана поведінка. Git не створить masterгілку, поки ви щось не зробите.

Коли я git --bare initце роблю, створює файли.

Не голі git initтакож створюватимуть ті самі файли, в прихованому .gitкаталозі в корені вашого проекту.

Коли я набираю текст, git branch masterвін говорить "fatal: Недійсне ім'я об'єкта:" master ""

Це знову правильна поведінка. Поки ви не скористаєтесь, немає жодної ведучої гілки.

Ви не ставили запитання, але я відповім на питання, яке я вважав, що ви хочете задати. Додайте один або декілька файлів у свій каталог, і git addїх підготуйте. Потім git commitстворити свій початковий комітет та masterвідділення.


3
Отже, що робити, якщо я ніколи взагалі не хотів гілки-вказівника під назвою "господар"? Що робити, якщо я хотів, щоб його називали "головним"? Немає способу почати з іншої назви першого вказівника гілки? Немає параметрів "git init"? Чи можу я змінити ім'я, вказане в .git / HEAD? Чи є ще якісь файли, які мені потрібно змінити?
Jemenake

1
@Jemenake Потім запустіть своє сховище, зробіть команду та перейменуйте гілку. Якщо ви дійсно хочете уникнути створення "головного" відділення, відредагуйте .git/HEADта перейдіть refs/heads/masterна нього refs/heads/main, але в цьому немає жодних причин . Просто перейменуйте свою філію після першого здійснення.
мегагар

13
ви можете використовувати git checkout -b <branchname>для зміни HEAD - вам не потрібно редагувати файл.
Superfly Jon

1
Остання частина була золотистою, TFS GIT поставляється з абсолютно неініціалізованим git repo. Тож після першого клонування за допомогою SourceTree нічого не працює, не могло довго розібратися, поки "Тоді git commit для створення вашої початкової фіксації та master гілки". Невже немає способу мати локальний / віддалений без початкового фіксації / натискання?
Pawel Cioch

Останнє пояснення допомагає мені зрозуміти, що галузь не може існувати, якщо немає комітів.
Mayur Patil

23

Git створює головну гілку після того, як ви зробите перше зобов’язання. Немає для чого відділення, якщо в сховищі немає коду.


1
Але вам потрібна нова гілка для того, щоб просунутися до господаря.
Сьорен

1
ось питання щодо "Git створює головну гілку після того, як ви зробили перше зобов'язання". Тоді чому "git status" показує "On Master Branch" перед усім цим?
Tick20

16

По-перше, коли ви створюєте "голий сховище", ви не збираєтеся з ним робити ніяких робіт (він не містить робочої копії, тому git branchкоманда не корисна).

Тепер, у вас не було б masterвідділення навіть після того, як ви робите це, git initце те, що немає ніяких комісій: коли ви створите свою першу фіксацію, у вас з'явиться masterфілія.


1
Гаразд, це ясно. Але коли я вчиняю це, говорить: фатально: порожній ідентифікатор
Рой ван Зантен

Я це зафіксував. Але коли я хочу витягнути / взяти це репо з іншого комп’ютера. Чи варто мені робити git init там?
Рой ван Зантен

@RoyvanZanten Ви можете використати, git cloneщоб заощадити, що потрібно робити git initна стороні приймача.
Borealid

Мені вдалося все пропрацювати. Немає помилок. Але коли я намагаюся натиснути, він говорить: Запис об'єктів <bla> bla> Всього <3/3> КЕРІВНИКУ SERVER 59fa0tweirdcod04 master> master Але коли я перевіряю файли на сервері, нічого там немає.
Рой ван Зантен

@RoyvanZanten Ви переглядаєте серверне сховище чи робочу копію сервера ? Вам потрібно зробити це, git checkoutякщо ви хочете, щоб туалет відображав те, що знаходиться в .gitкаталозі (куди ви натиснули).
Borealid

12

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.