помилка git: не вдалося перенести деякі відгуки на віддалений


450

Чомусь я зараз не можу натиснути, тоді як я міг би це зробити вчора. Можливо, я заплутався з налаштуваннями чи щось.

Ось що відбувається:

Коли я використовую master git push origin

gitbashscr

Як виглядає мій робочий каталог та віддалене сховище:

Знімок екрана папки файлів Windows з такими каталогами: .git, css, js.  І ці файли: index.php, readme, setsu.php.  Слово "локальний" зі стрілкою вказує на папку css.  Нижче скріншот із заголовком "github" та css-папкою та файлом index.php


7
схоже, що ваше місцеве репо не синхронізоване з git repo. ти намагався зробити git pull?
R11G

1
так, але я не маю уявлення про наступний синтаксис після git pull, він каже, git pull <remote> <branch>, чи можете ви дозволити мені побачити приклад синтаксису для git pull?
leipzy

1
Як перевірити цей же питання - stackoverflow.com/questions/18588974 / ...
R11G

3
@ R11G дякую, сер! цей зв'язок допомогла мені stackoverflow.com/a/18589043/3626672
leipzy

2
Я отримав цю помилку на новому репо. Це допомогло: stackoverflow.com/a/6518774/2067690
HumanInDisguise

Відповіді:


619

Якщо репортаж GitHub бачив, що нові комісії підштовхуються до нього, поки ви працювали на місцях, я б радив використовувати:

git pull --rebase
git push

Повний синтаксис:

git pull --rebase origin master
git push origin master

З Git 2.6+ (вересень 2015 р.), Після цього (раз)

git config --global pull.rebase true
git config --global rebase.autoStash true

Простих git pullбуде досить.
(Примітка: з Git 2.27 Q2 2020 , a merge.autostashтакож доступний для вашої звичайної тяги, без відновлення)

Таким чином, ви б перегравати (в --rebaseчастині) локальні коммітов на вершині недавно оновлений origin/master(або origin/yourBranch: git pull origin yourBranch).

Дивіться більш повний приклад у главі 6 Витягніть із основою книги Git Pocket Book .

Я рекомендую:

# add and commit first
git push -u origin master

Це встановило б зв'язок відстеження між вашою локальною гілкою та її гілкою.
Після цього будь-який майбутній поштовх для цієї гілки можна зробити простим:

git push

Див. " Чому мені потрібно явно натиснути нову гілку? ".


Оскільки Оперативна програма вже скинула і повторно взяла на себе зобов'язання поверх origin/master:

git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin master

Не потрібно pull --rebase.

Примітка: git reset --mixed origin/masterтакож можна записати git reset origin/master, оскільки --mixedпараметр є типовим для використання під час використання git reset.


чи добре виконати запропонований git pull --rebase ...? coz Я вже зробив> git reset - змішане походження / master> git add. > git commit -m "Це нова комісія для того, що я спочатку планував стати поправкою"> git push master origin запропонував тут stackoverflow.com/questions/18588974/… btw Ваша відповідь виглядає корисною сер
leipzy

3
Для мене мені просто потрібно було запустити "git commit". :(
Тайлер

Дякую, виправлена ​​дурна проблема з Git LFS, я здався, що відтепер я повинен використовувати командний рядок як результат.
Тайлер C

2
Дійсно супер .. нижче команди працювали для мене ... git reset - змішане походження / master git add. git commit -m "Це нова комісія за те, що я спочатку планував внести зміни" майстер git push origin Подяки @VonC
Харі Нараянан

1
Спасибі це працює! Я годинами шукав це рішення!
Редіон Xhepa

96

Хтось намагався:

git push -f origin master

Це повинно вирішити проблему.

EDIT: Грунтуючись на коментарі @Mehdi нижче, мені потрібно щось уточнити —force pushing. Команда git вище працює безпечно лише для першого введення. Якщо вже було зроблено комітети, витягніть запити чи гілки в попередніх, це скидає все це та встановить його з нуля. Якщо так, то для кращого вирішення зверніться до детальної відповіді @VonC.


25
Діє, але погано, не використовуйте його, якщо ви не знаєте, що робите. (напевно, ви не знаєте, чим займаєтесь, якщо дивитесь на SO)
Мехді,

3
Якщо ви збираєтеся спробувати -f/ замість цього --forceзавжди безпечніше використовувати --force-with-lease, що перерве, якщо будуть зміни в нижній частині течії, які будуть зациклюватися натисканням --force-with-leaseпотрібен для безлічі повсякденних ситуацій із звільненням, але --forceмайже ніколи не потрібен.
Джошуа Голдберг

63

Якщо ви щойно використовували git initта додавали свої файли з git add .чимось подібним і додали вашу віддалену гілку, можливо, ви просто не зробили ( git commit -m 'commit message') нічого локального, щоб натиснути на пульт ... У мене була просто ця помилка, і це була моя проблема.


1
просто наткнувся на це. Команда введення команд не працювала під час додавання git. гарний дзвінок. Дякую
jgritten

1
Спасибі людино! Це воно. Я думав, що я здійснив свої зміни. Тепер майстер git push -u походження працює чудово.
tleo

36

У мене була така ж проблема. У мене виникла ця проблема, тому що я не взяв жодного зобов’язання навіть на початкові зобов’язання, і все ще намагався натиснути.

Колись я це зробив git commit -m "your msg"і тоді все працювало нормально.


8
Це не має особливого сенсу. Оригінальне запитання - про те, що місцевий git знаходиться позаду . Ні в якому разі "відставання" не може бути вирішене моїм місцевим зобов'язанням!
GhostCat

О, я також забуваю покластися: p
Шамс Нахід

Це також можливо, це не дозволить вам натиснути з порожньою фіксацією
mboy

3
У мене просто була ця проблема, і я забув зробити це. Повідомлення про помилку має бути більш зрозумілим
Іван Топич

1
Це стосується мене, оскільки я отримував саме таке повідомлення про помилку, і це рішення вирішило мою проблему.
Дієго Фортес

19

Перейменуйте свою філію та натисніть, наприклад:

git branch -m new-name
git push -u new-name

Це працювало для мене.


1
це спрацювало, але, будь ласка, поясніть, чому ми повинні це робити
kanlukasz

Нічого, це насправді спрацювало, але чому? У мене був дефіс в моєму імені локального філії: my-branch_wont_push. Одного разу я перейменував це my_branch_wont_push, потім git push -u origin my_branch_wont_pushпрацював на мене.
cdabel

13

Я знаходжу рішення цієї проблеми в довідці github.

Ви можете бачити це з: Помилка з помилками, що не переходять вперед

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

Ви можете виправити це шляхом вилучення та об'єднання змін, які були зроблені на віддаленій гілці, із змінами, які ви внесли локально:

$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin branch
# Merges updates made online with your local work

Або ви можете просто використовувати git pull для виконання обох команд одночасно:

$ git pull origin branch
# Grabs online updates and merges them with your local work

1
Це нормальний процес, коли справи працюють як слід. Це нічого не допомагає, коли Git думає, що це вже актуально, як запитав @rubyandcoffee.
Тім

10
  1. git init

  2. git remote add origin https://gitlab.com/crew-chief-systems/bot

  3. git remote -v (для перевірки поточного сховища)

  4. git add -A(додати всі файли)

  5. git commit -m 'Added my project'

  6. git pull --rebase origin master

  7. git push origin master


перед тим, як натиснути код, який потрібно витягнути з сховища
Джеймс Сіва,

ви можете просто написати як git pull - master master origin
Джеймс Сіва,

6

Я зіткнувся з тією ж проблемою, виправленою нижче кроками.

  1. git init
  2. git add .
  3. git commit -m 'Add your commit message'
  4. git remote add origin https://User_name@bitbucket.org/User_name/sample.git

    (Вище URL-адреса https: //User_name@bitbucket.org/User_name/sample.git посилається на ваш URL-адресу проекту біт-відра)

  5. git push -u origin master

натяк

перевірте, чи зв’язаний ваш обліковий запис git hub з місцевим git, використовуючи:

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

4

Якщо ви використовуєте gerrit, це може бути викликано невідповідним ідентифікатором змін у коміті. Спробуйте видалити Change-Id і подивіться, що станеться.


4

Не забудьте зробити свої зміни, перш ніж натиснути на Github repo. Це може вирішити вашу проблему.


4

Якщо не здійснити початкові зміни перед натисканням, це також спричинить проблему


3

перед тим, як натиснути, ви повинні додати або зробити зміни або зробити git push -f origin master


3
git push origin {your_local_branch}:{your_remote_branch}

Якщо ваша місцева філія та віддалене відділення мають одне ім’я, то чи можете ви пропустити назву місцевої філії, просто скористайтеся git push {your_remote_branch}. Інакше це викине цю помилку.


3

Я дотримувався наступних кроків, і це працювало на мене.

 rm -rf .git
 git init
 git add .
 git commit -m"first message"
 git remote add origin "LINK"
 git push -u origin master

2

Це може статися, коли у вас немає файлів. Спробуйте створити текстовий файл, після чого виконайте наступні команди

git add .
git commit -m "first commit"
git push --set-upstream origin master

2

Для мене проблема була в тому, що я не додавав файли перед фіксацією.

git add .

git commit -m "your msg"


2

Найкраще скористайтеся, rm -rf .git/hooksа потім спробуйте git push


Цікаво, що мені це допомогло у випадку, коли явно не було жодних зобов'язань щодо походження (не потрібно проводити перезавантаження).
pevik

Навіщо ти викидав усі свої гачки? можливо, спершу зробіть резервну копію?
MSpreij

2

Я створив порожнє репо в GitHub і мій код локально. Я зіткнувся з тією ж проблемою і зараз, коли дотримувався нижченаведеної послідовності,

git init
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git add .
git push -u origin master

ВИПУСК: Я намагався вчинити перед тим, як ставити файли, які у мене є.

Тож нам потрібно складати файли і потім вчиняти.

Це правильна послідовність.

git init
git add .
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git push -u origin master

Оскільки я спочатку виконую неправильну послідовність, я просто виконую наступні команди

git add .
git commit -m 'Initial Commit'
git push -u origin master

1

Не впевнений, чи це стосується, але для мене виправданням було зробити щось місцеве після git init. Потім я натиснув на віддалений за допомогою --set-upstream ...


1

Створення нової гілки для мене вирішено:

git checkout -b <nameOfNewBranch>

Як очікувалося, немає необхідності в об'єднанні, оскільки попередня філія повністю містилася в новій.


1
У мене було саме це питання, я був у функції22 і робив git push origin feature22-fix, але feature22-fixне виходив ні з локального, ні з віддаленого, тому мені довелося спочатку
Honey

1

Якщо ви намагаєтеся ініціалізувати каталог із наявним сховищем GitHub, вам слід переконатися, що ви вносите зміни.

Спробуйте створити файл:

touch initial
git add initial
git commit -m "initial commit"
git push -u origin master

Це дозволить розмістити файл з ім'ям початкового, який ви можете видалити пізніше.

Сподіваюся, що ця відповідь допомагає! Удачі!



1

У моєму випадку саме мій huskyпакунок відключає поштовх.

> husky - pre-push hook failed (add --no-verify to bypass)
> husky - to debug, use 'npm run prepush'
error: failed to push some refs to 'https://username@bitbucket.org/username/my-api.git'

Щоб натиснути його насильно, просто запустіть git push origin master --no-verify

Я побіг npm run prepushпереглядати помилку, і це було причиною:

npm ERR! code ELOCKVERIFY
npm ERR! Errors were found in your npm-shrinkwrap.json, run  npm install  to fix them.
npm ERR!     Invalid: lock file's loopback-utils@0.8.3 does not satisfy loopback-utils@^0.9.0

Побіг npm installі вчинив це, і проблема виправлена.


1

робити це

git rm --cached *
git add .
git commit -m"upload"
git push --set-upstream origin master

Щасливого кодування!


1

Спробуйте цю команду git,

git push origin master –f
git push origin master --force

0

Добре, якщо жоден з вищезазначених відповідей не працює, і якщо ви щось заплуталися ssh-addостаннім часом. Спробуйте

ssh-add -D

0

Для користувачів sourcetree

Спочатку виконайте початкове введення або переконайтеся, що у вас немає невмілих змін, потім збоку від sourcetree є "ПОДАВАННЯ", клацніть правою кнопкою миші та натисніть "Натиснути на походження". Ось так.


0

Це трапляється зі мною, оскільки у мене був тег з таким самим, як і гілка, і я намагався відсунути гілку на віддалений.


0

У моєму випадку проблема полягала в тому, що (як не дивно) не було гілки, яка називалася "господар". Я взяв сховище від Github.


0

Я натискав на існуючу гілку для друку «evelop», у якої ще не було оформлення замовлення, і замість цього я хотів натиснути гілку під назвою «конверт». Тож гілка повинна бути існуючою / оформити замовлення в місцевій робочій копії, щоб зрозуміти, тому ця помилка, аби не друкувати.

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