умолчанию git отказывается входить в текущую ветку




текущая ветка git (5)

Вы действительно набираете команды Git в командной строке или используете исполняемый файл Git из своего собственного кода?
Если вы используете его из кода, уверены ли вы, что Git пытается найти правильный локальный каталог?

Это можно сделать двумя способами:

  1. Используйте параметры, предоставляемые вашим языком программирования, чтобы установить правильный рабочий каталог перед выполнением Git
    ( Пример C # , потому что это то, что я использую)

  2. Всегда передавайте параметр -C в Git, чтобы указать каталог с локальным репо.

У меня есть проект, в котором я вызываю исполняемый файл Git из кода C #, и я получил такое же сообщение об ошибке, что и в вопросе, когда я случайно забыл установить -C parameter .

Я настроил удаленный репозиторий, и я могу вносить в него новые изменения, но я не могу извлечь из него, я всегда получаю (довольно загадочное) сообщение об ошибке:

fatal: Refusing to fetch into current branch refs/heads/master of non-bare repository
fatal: The remote end hung up unexpectedly

Что это значит? Что делать, чтобы включить выборку?

(Обратите внимание, что это удаленное репо используется только как резервное репо, поэтому оно должно быть в значительной степени точной копией моего локального репозитория. Я действительно не могу понять, почему я могу нажать на него, но не извлечь из него ...)

Моя конфигурация выглядит так:

[remote "origin"]
    url = ssh://blablablah
    fetch = +refs/*:refs/*
    mirror = true

То, что вы пытаетесь сделать, - это получить ветку, на которой вы работаете. То есть вы находитесь на главной ветке, и вы пытаетесь ее обновить. Это невозможно. Чаще всего обновлять ветви remotes/* а затем втягивать их в свои локальные. То, что вы хотите, возможно,

git remote add otherrepo thehost:/the/path.git

Это установит репозиторий для remotes/otherrepo/* . git fetch otherrepo должен делать трюк. Alternativeley, вы можете вручную отредактировать свой .git/config и установить fetch для удаленного на что-то вроде refs/heads/*:refs/remotes/otherrepo/* .


В случае, если кто-либо найдет это, потому что они специально хотят попасть в текущую ветку, вы можете использовать --update-head-ok . Из документов :

-u
--update-голова-ок
По умолчанию git fetch отказывается обновлять головку, которая соответствует текущей ветке. Этот флаг отключает проверку. Это исключительно для внутреннего использования git pull для связи с git fetch, и если вы не реализуете свой собственный фарфор, вы не должны его использовать.

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


У меня такая же проблема. Сначала я пытаюсь воспользоваться этим

git fetch [remote_name] [branch_name] 

У меня была та же проблема, о которой вы говорите. После этого я попробовал эту простую команду.

git pull [remote_name] [branch_name]

Примечание будет извлекать и объединять изменения. Если вы используете терминал, тогда файл открывается, требуя фиксации сообщения. С помощью этого сообщения вы будете нажимать последнюю фиксацию. Попробуйте эту команду, и, наконец, вы сможете нажать запрос.

git push [remote_name] [branch_name_local] 

У меня была эта проблема, когда я бездумно клонировал репозиторий, а не получал его, так что оба хранилища были мастерами. Если вы не работали над удаленным репозиторием, вы можете исправить вещи с помощью основных команд git следующим образом: (1) удалить удаленный репозиторий, (2) скопировать локальный репозиторий туда, где был удаленный, (3) удалить локальный, а затем (4) настроить локальный репозиторий, используя

git init; git fetch $REMOTE_GIT_REPOSITORY_URL  

Тогда git pull и git push будут делать правильные вещи. Преимущество, заключающееся в том, чтобы избегать git remote , по более эффективному и принципиальному ответу Майкла, заключается в том, что вам не нужно думать о семантике отслеживающих ветвей.





fetch