Git push не работает

Если вы хотите получше узнать те части Git, про которые раньше боялись спросить, то этот список для вас. Тут собраны наиболее типичные ситуации и способы их решения как из личного опыта автора, так и собранные по всему Интернету.

Ошибка в комментарии к коммиту

Если коммит ещё не был отправлен на сервер (push), то можно воспользоваться простой командой, позволяющей редактировать текст сообщения к последнему коммиту:

git commit --amend

Как отменить последний коммит?

Можно использовать git reset , вот так:

git reset --hard HEAD

1 означает один коммит до HEAD, т.е. до текущего положения. Стоит заметить, что это «ядерный» способ, который отменит все изменения. Если вам нужно сохранить всё, что вы сделали, но еще не успели закоммитить, используйте:

git reset --soft HEAD

Удалить ветку на сервере

git push origin --delete имя_ветки

В чём разница между «git pull» и «git fetch»?

git pull — это, по сути, git fetch , после которого сразу же следует git merge . git fetch получает изменения с сервера и сохраняет их в refs/remotes/ . Это никак не влияет на локальные ветки и текущие изменения. А git pull вливает все эти изменения в локальную копию.

Читайте также:  Разборка samsung np r519

Как отменить «git add» до коммита?

Вы выполнили git add имя_файла случайно и хотите отменить добавление файла. Если коммит ещё не был сделан, то поможет:

git reset имя_файла

Как разрешать конфликты слияния?

Используйте программу git mergetool , которая предоставляет удобный интерфейс для разрешения конфликтов.

Удалить все локальные файлы и директории, которые не отслеживает Git, из вашей текущей копии

Осторожно! Лучше сделайте перед этим бэкап.

Клонировать все ветки с сервера

Скорее всего, вы это уже сделали, а ветки просто скрыты. Вот команда, чтобы показать их:

Можно использовать git checkout origin/имя_ветки , чтобы посмотреть на нужную ветку. Или git checkout -b имя_ветки origin/имя_ветки , чтобы создать локальную ветку, соответствующую удалённой.

Переименовать локальную ветку

git branch -m oldname newname

Вернуться к любому коммиту

Можно использовать git reset , как показано ранее. Это будет означать, что вы хотите навсегда вернуться к тому состоянию, в котором вы были, а не просто посмотреть на него (для этого надо сделать checkout). Идентификатор коммита должен быть такой, какой прописан в выводе команды git log .

git reset --hard идентификатор_коммита

Ещё раз повторим: команда отменит все текущие изменения, так что убедитесь, что вам это действительно нужно. Или используйте --soft вместо --hard.

Удалить подмодуль (submodule)

Создание подмодулей используется довольно редко, но иногда они всё-таки встречаются. Вот, что вам нужно:

git submodule deinit submodulename
git rm submodulename
git rm --cached submodulename
rm -rf .git/modules/submodulename

Перезаписать локальные файлы во время git pull

Вам снова поможет git reset :

git fetch --all
git reset --hard origin/master

Как добавить пустую директорию в репозиторий?

Никак! Такая возможность просто не поддерживается, т.к. считается, что вам это не нужно. Но есть один трюк. Можно создать файл .gitignore в нужной директории со следующим содержимым:

Читайте также:  Почему нельзя копировать текст с сайта

# Игнорируем всё в этой директории
*
# Кроме самого файла .gitignore
!.gitignore

Экспортирование исходников аналогично «svn export»

Используйте git archive , например, так:

git archive --format zip --output /путь/к/файлу/файл.zip master

Отменить все изменения, кроме тех, что уже добавлены в планируемый коммит

Создать новую ветку на сервере из текущей локальной ветки

git config --global push.default current
git push -u

Восстановить удалённый файл

Сначала нужно найти последний коммит, где файл ещё существует:

git rev-list -n 1 HEAD -- имя_файла

Потом восстановить этот файл:

git checkout найденный_коммит^ -- имя_файла

Вернуть один конкретный файл в состояние, в котором он был в каком-либо коммите

Почти как в прошлом примере, только чуть проще:

git checkout идентификатор_коммита имя_файла

9 Dave [2016-01-29 08:53:00]

Я пытаюсь подтолкнуть свои комманды к Битбакету, используя команду

Ничего не происходит. Мне представляется командная строка, и сообщение об ошибке отсутствует. Когда я просматриваю источник в Интернете, мой код не был загружен.

Не отображается дополнительная информация.

Я использовал много раз, используя этот метод, но он просто переставал работать.

Я использую 2.6.1.windows.1 в Windows 10

UPDATE: Это проблема с самой Git. Я не могу нажимать, тянуть или клонировать любой репозиторий как на GitHub, так и на Bitbucket. Кажется, что любая команда Git, которая подключается к удаленному компьютеру, не работает.

Я попытался удалить и переустановить git. Я попытался установить оба, 2.6.1 и 2.7.0 (2.7 даже не устанавливался правильно на Windows 10 Build 14251). Я могу взаимодействовать с репо без проблем на других компьютерах.

4 ответа

У меня была та же ошибка, push/pull/clone выполнил бы без ошибок, обратной связи, но ничего не произошло. Что помогло установить последнюю версию GIT, и когда была выбрана опция "Выбор HTTPS-транспорта", я выбрал "Использовать собственную библиотеку защищенных каналов Winbdows", и все это снова работало. Надеюсь, что это поможет кому-то.

Читайте также:  Постоянно крутится кружок у курсора windows 7

1 VonC [2016-01-29 09:02:00]

Проверьте, находится ли вы в режиме отключен HEAD ( git symbolic-ref –short -q HEAD пуст), что объясните, почему нажатие git терпит неудачу.

У меня была аналогичная проблема с моими git нажатиями, а git не показывался на Bitbucket.

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

Однако никаких изменений в моей ветке Bitbucket не было.

  • Внутри Bitbucket нажмите "Ветки" либо на боковой панели, либо в главном окне.
  • Вы увидите свои ветки. Нажмите на ветку, в которой вы работаете в вашей среде, и что вы хотите нажать.
  • Внутри желаемой ветки должна быть кнопка в правом верхнем углу (если они не изменят шаблон), называемой "Checkout". Нажмите на это.

Bitbucket предоставляет следующее сообщение: Проверьте эту ветку на локальном компьютере, чтобы начать работу над ней. Он также предоставляет следующий код для ввода или вставки в ваш терминал:

Запустите эту команду в своем терминале.

  • Это должно быть reset соединение.
  • Попробуйте нажать git. Теперь он должен работать.
  • Что не так, подскажите?

    [ git status ]

    [ git add . ]

    [ git remote rm origin ]

    [ обновился ]

    Перенес в другой каталог исходники:

    [ Решение ]

    Наверное больше для себя чем для кого-то оставлю заметку.

    В общем дело было в public key , ввел другой public key , который находится в файле

    Оцените статью
    ПК Знаток
    Добавить комментарий

    Adblock
    detector