Git push ничего не сделает (все актуально)

Я пытаюсь обновить Git-репозиторий на GitHub. Я сделал кучу изменений, добавил их, совершил, а затем попытался сделать git push, Ответ говорит мне, что все в курсе, но, очевидно, это не так.

git remote show origin

отвечает с хранилищем я ожидал.

Почему Git сообщает мне, что хранилище обновлено, когда есть локальные коммиты, которые не видны в хранилище?

  [searchgraph]  git status
# On branch develop
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       Capfile
#       config/deploy.rb
nothing added to commit but untracked files present (use "git add" to track)

  [searchgraph]  git add .

  [searchgraph]  git status
# On branch develop
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   Capfile
#       new file:   config/deploy.rb
#

  [searchgraph]  git commit -m "Added Capistrano deployment"
[develop 12e8af7] Added Capistrano deployment
 2 files changed, 26 insertions(+), 0 deletions(-)
 create mode 100644 Capfile
 create mode 100644 config/deploy.rb

  [searchgraph]  git push
Everything up-to-date

  [searchgraph]  git status
# On branch develop
nothing to commit (working directory clean)

23 ответа

Решение

git push не выталкивает все ваши локальные ветви: как он узнает, в какие удаленные ветви их подтолкнуть? Это только выдвигает локальные ветви, которые были настроены для передачи в определенную удаленную ветку.

На моей версии Git (1.6.5.3), когда я запускаю git remote show origin он фактически выводит, какие ветви настроены для push:

Local refs configured for 'git push':
  master pushes to master (up to date)
  quux   pushes to quux   (fast forwardable)

Q. Но я мог бы подтолкнуть к masterне заботясь обо всем этом!

Когда ты git clone по умолчанию он устанавливает ваш локальный masterветка, чтобы нажать на пульт masterфилиал (локально упоминается как origin/master), так что если вы делаете только наmasterтогда простойgit pushвсегда будет толкать ваши изменения обратно.

Однако из выходного фрагмента, который вы опубликовали, вы находитесь в веткеdevelopчто, я думаю, не было настроено на что-то подталкивать. Такgit pushбез аргументов не будет выдвигать коммиты на эту ветку.

Когда написано "Все актуально", это означает "все ветки, которые вы сказали мне, как продвигать, актуальны".

Q. Так, как я могу подтолкнуть мои коммиты?

Если то, что вы хотите сделать, это положить ваши изменения от develop вorigin/masterтогда вам, вероятно, следует объединить их сmasterзатем нажмите это:

git checkout master
git merge develop
git push             # will push 'master'

Если вы хотите создать developветка на пульте, отдельная отmaster, а затем предоставить аргументыgit push:

git push origin develop

Это будет: создать новую ветку на пульте под названиемdevelop; и приведите эту ветку в соответствие с вашим местнымdevelop ветка; и установить develop подтолкнуть к origin/developтак что в будущемgit push без аргументов подтолкнет develop автоматически.

Если вы хотите подтолкнуть ваш местный develop в удаленную ветку под названием что-то другое, чем developтогда вы можете сказать:

git push origin develop:something-else

Тем не менее, эта форма не будет создана develop всегда подталкивать к origin/something-else в будущем; это однократная операция.

Это случилось со мной, когда мое приложение SourceTree упало во время постановки. А в командной строке это выглядело как предыдущий git add был поврежден. Если это так, попробуйте:

git init
git add -A
git commit -m 'Fix bad repo'
git push

В последней команде вам может понадобиться установить ветку.

git push --all origin master

Имейте в виду, что этого достаточно, если вы не делали ветвления или чего-либо подобного. В этом случае убедитесь, что вы нажимаете на правильную ветку, как git push origin develop,

Пожалуйста, попробуйте перейти к последнему коммиту, а затем выполните git push origin HEAD:master,

Пытаться:

git push --all origin

Для моего случая ни одно из других решений не сработало. Я должен был сделать резервную копию новых измененных файлов (показано с git status) и запустить git reset --hard, Это позволило мне перестроиться с удаленного сервера. Добавление новых измененных файлов и запуск

git add .
git commit -am "my comment"
git push

Сделал трюк. Я надеюсь, что это поможет кому-то, как решение "последнего шанса".

Прямо сейчас, кажется, что вы находитесь в разработке ветки. У вас есть развивающаяся ветка по вашему происхождению? Если нет, попробуйте git push origin develop, git push будет работать, как только узнает о ветке разработки на вашем источнике.

Что касается дальнейшего чтения, я бы посмотрел справочные страницы git-push, в частности, раздел примеров.

Если быть точным, если вы хотите объединить что-то с мастером, вы можете выполнить следующие шаги.

git add --all // If you want to stage all changes other options also available
git commit -m "Your commit message"
git push // By default when it clone is sets your origin to master or you would have set sometime with git push -u origin master.

Обычная практика в модели запросов на извлечение - создать новую локальную ветвь, а затем переместить эту ветку в удаленную. Для этого вам нужно указать, куда вы хотите отправить свои изменения на удаленном компьютере. Вы можете сделать это, упомянув удаленный во время нажатия.

git push origin develop // It will create a remote branch with name "develop".

Если вы хотите создать ветку, отличную от вашего локального имени, вы можете сделать это с помощью следующей команды.

git push origin develop:some-other-name

Спасибо Сэму Стоуксу. По его ответу вы можете решить проблему другим способом (я так и использовал). После обновления вашего каталога разработки вы должны повторно инициализировать его

git init

Затем вы можете зафиксировать и отправить обновления мастеру

Выполните следующие действия:1)git log2)git remote -v [проверьте, есть ли источник происхождения или нет]

3)[ЕСЛИ НЕТ ПРОИСХОЖДЕНИЯ] git remote add origin yourOriginName например:git remote add origin https://github.com/vikaskumar27071990/RandomCodes.git

4)git status

5)git push -u origin master

(ЕСЛИ ВЫ ПОЛУЧАЕТЕ ОШИБКУ, КАК "master" настроен для отслеживания удаленной ветви "master" от "origin", СЛЕДУЙТЕ НИЖЕ ТОЧКАМ)

6)

git initgit add -A git commit -m 'Исправить плохое репо' git push

По последней команде вам может потребоваться установить ветку.

git push - мастер всех источников

Это случилось со мной. Я просто перенес изменения, а затем это подтолкнуло.

Это случилось со мной, когда я ^C в середине git push на GitHub. GitHub не показал, что изменения были сделаны, однако.

Чтобы исправить это, я внес изменения в свое рабочее дерево, зафиксировал, а затем снова нажал. Это работало отлично.

Я перепробовал много методов, включая определенные здесь. Что я получил,

  • Убедитесь, что имя репозитория является действительным. Лучше всего скопировать ссылку с сайта репозитория и вставить в git bash.

  • Убедитесь, что вы зафиксировали выбранные файлы.

    git commit -m "Your commit here"
    
  • Если оба шага не работают, попробуйте

    git push -u -f origin master

Это случилось со мной, когда я попытался нажать из новой ветки и использовал git push origin masterвместо. Вам следует либо:

  • Использование: git push origin your_new_branch если вы хотите, чтобы эта ветка тоже происходила в удаленном репо.
  • В противном случае проверьте, что ваша основная ветка объединяет вещи, а затем переходит от мастера к репозиторию git с помощью git merge origin master.

Резюме: суть в том, что вы должны проверить, где вы предлагаете второй параметр для git merge. Поэтому, если вы находитесь в главном хранилище, используйте master в качестве второго параметра, если вы находитесь в new_branch, используйте его в качестве второго параметра, если вы хотите сохранить эту ветку в удаленном репо, иначе вместо этого выберите второй вариант выше.

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

      rm -rf .git/
git init
git remote add origin https://repository.remote.url
git add .
git commit -m “Commit message here”.
git push -f origin master

Вместо этого вы можете попробовать следующее. Вам не нужно идти в master; Вы можете напрямую принудительно отправить изменения из своей ветки.

Как объяснено выше, когда вы делаете ребаз, вы меняете историю своей ветки. В результате, если вы попытаетесь сделать нормальный git push после перебазирования Git отклонит его, потому что нет прямого пути от коммита на сервере до коммита в вашей ветке. Вместо этого вам нужно будет использовать -f или же --force флаг, чтобы сказать Git, что да, вы действительно знаете, что делаете. При силовых толчках настоятельно рекомендуется установить push.default настройка config на простой, который используется по умолчанию в Git 2.0. Чтобы убедиться, что ваша конфигурация верна, запустите:

$ git config --global push.default simple

Как только это будет правильно, вы можете просто запустить:

$ git push -f

И проверьте ваш запрос на получение. Это должно быть обновлено!

Для получения более подробной информации перейдите к нижней части " Как перебазировать запрос на извлечение"

Также убедитесь, что вы нажимаете на правильную ветку.

Проблема также может заключаться в том, что в локальном филиале нет восходящего потока.

использовать:

      git push --set-upstream origin main

Вы настраиваете, в какую ветку отправляете файлы.

Это может произойти, когда вы находитесь в ветке, отличной от той, которую вы думаете, назовем ее «добавить». Вам нужно вернуться к основному локально и нажать оттуда. Но будьте осторожны, когда вы вернетесь в main, все ваши изменения будут отменены, и вы увидите только код до последнего редактирования вашего локального файла main.

В моем случае мне пришлось удалить все пульты (их было несколько по какой-то необъяснимой причине), снова добавить пульт и зафиксировать с -f.

$ git remote
origin
upstream

$ git remote remove upstream
$ git remote remove origin
$ git remote add origin <my origin>
$ git push -u -f origin main

Я не знаю, если -u flag что-то внес, но это тоже не повредит.

Вы уверены, что у вас установлен правильный URL-адрес удаленного источника? Путем выдачи Правильно ли настроены параметры "Fetch URL" и "Push URL" в соответствии с URL-адресом вашего репозитория?

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

git commit -m "начальный коммит"

git push происхождение основной

это сработало для меня

Пытаться git add -A вместо того git add .

git push origin master
Другие вопросы по тегам