gitエラー:一部の参照をリモートにプッシュできませんでした


448

なんらかの理由で、今はプッシュできませんが、昨日はプッシュできました。多分私は設定か何かを台無しにした。

これは何が起こるかです:

git push origin masterを使用する場合

gitbashscr

私の作業ディレクトリとリモートリポジトリは次のようになります。

これらのディレクトリを含むWindowsファイルフォルダーのスクリーンショット:.git、css、js。 そして、これらのファイル:index.php、readme、setsu.php。 矢印の付いた「ローカル」という単語は、cssフォルダーを指しています。 以下、「github」という見出しのスクリーンショット、cssフォルダーとindex.php-file


7
ローカルリポジトリがgitリポジトリと同期していないようです。git pullを実行しようとしましたか?
R11G 2014年

1
はい、しかし私はgit pullの後にgit pull <remote> <branch>と言った次の構文についてはわかりません、git pullの構文例を見せていただけますか?
leipzy 2014年

1
この類似した質問をチェックしてください- stackoverflow.com/questions/18588974/...
R11G

3
@ R11Gありがとうございます!このリンクは私に役立ちましたstackoverflow.com/a/18589043/3626672
leipzy

2
新しいリポジトリでそのエラーが発生しました。これが
役に立ち

回答:


618

ローカルで作業しているときにGitHubリポジトリに新しいコミットがプッシュされたことを確認した場合は、次を使用することをお勧めします。

git pull --rebase
git push

完全な構文は次のとおりです。

git pull --rebase origin master
git push origin master

Git 2.6以降(2015年9月)では、実行後(1回)

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

シンプルgit pullで十分です。
(注:Git 2.27 Q2 2020では、merge.autostash通常のプルでもリベースなしで使用できます)

そのように、あなたは(リプレイう--rebase新しく更新されたの上、お近くのコミットを部分)origin/master(またはorigin/yourBranchgit pull origin yourBranch)。

第6章Git Pocket Bookのリベースプル」のより完全な例を参照してください。

私はお勧めします:

# add and commit first
git push -u origin master

これにより、ローカルマスターブランチとそのアップストリームブランチの間に追跡関係が確立されます。
その後、そのブランチに対する将来のプッシュは、シンプルで実行できます。

git push

なぜ新しいブランチを明示的にプッシュする必要があるのですか?」を参照してください。


OPはすでにので、リセットしてやり直しそのコミットの上に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--mixedgit reset


提案されたgit pull --rebase ...を実行してもよろしいですか?coz私はすでに行っています> git reset --mixed origin / master> git add。> gitの-mをコミット> gitのプッシュ原点マスターここで提案「これは新しい私はもともとamendmendを予定何のためにコミットがある」stackoverflow.com/questions/18588974/...ところで、あなたの答えは役に立ち先生に見える
leipzy

3
私にとっては、「git commit」を実行するだけで済みました。:(
タイラー

おかげで、Git LFSの愚かな問題が修正されました。その結果、私はコマンドラインを使用する必要があることに屈服しました。
タイラーC

2
本当にスーパー..以下のコマンドが私のために働いた... git reset --mixed origin / master git add。git commit -m「これは私が最初に修正する予定だったものの新しいコミットです」git push origin masterありがとう@VonC
Hari Narayanan

1
ありがとうございます。私はこの解決策のために何時間も探していました!
Redion Xhepa

95

誰かが試しましたか:

git push -f origin master

これで問題は解決するはずです。

編集:以下の@Mehdiのコメントに基づいて、私は何かについて明確にする必要があり—force pushingます。上記のgitコマンドは、最初のコミットに対してのみ安全に機能します。以前にすでにコミット、プルリクエスト、またはブランチがあった場合、これによりすべてがリセットされ、ゼロから設定されます。もしそうなら、より良い解決策のために@VonCの詳細な回答を参照してください。


25
動作しますが、問題があります。何をしているかわからない場合は使用しないでください。(おそらく、SOを表示している場合、何をしているのか分からないでしょう)
Mehdi

3
あなたがしようとするつもりなら-f/ --forceそれは使用することが常に安全です--force-with-leaseプッシュによって上書きさになるだろう下流の変更がある場合は中止しますこれは、代わりに。 --force-with-lease毎日のリベースの多くの状況で必要ですが、--forceほとんど必要ありません。
Joshua Goldberg

63

を使用git initしてファイルをgit add .追加したり、リモートブランチを追加したりした場合git commit -m 'commit message'、リモートにプッシュするためにローカルで何かをコミットしていない()可能性があります...このエラーが発生しただけで、問題。


1
ちょうどこれに遭遇しました。git add中にcommitコマンドが機能しませんでした。いい電話。ありがとう
jgritten 2018

1
ありがとう!それでおしまい。私は自分の変更をコミットしたと思いました。これでgit push -u origin masterは正常に動作します。
tleo

36

同じ問題がありました。最初のコミットでさえもコミットをしておらず、まだプッシュしようとしていたため、この問題が発生していました。

一度やればgit commit -m "your msg"、すべてがうまくいきました。


8
それはあまり意味がありません。元の質問は、ローカル gitが遅れていることです。ローカルコミットを行うことで、「遅れている」ことを解決することはできません。
GhostCat 2017年

ああ私もコミットするのを忘れています:p
Shams Nahid

これは、空のコミットでプッシュできないようにすることも可能です
mboy

3
私はこの問題を抱えていて、コミットするのを忘れていました。エラーメッセージがより明確になるはずです
IvanTopić2018年

1
正確なエラーメッセージが表示されていて、この解決策で問題が解決されたので、それは私にも当てはまります。
Diego Fortes

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
これは、物事が期待どおりに機能している場合は常に通常のプロセスです。@rubyandcoffeeが尋ねたように、gitがすでに最新であると判断した場合は、何の助けにもなりません。
Tim

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


リポジトリからプルする必要があるコードをプッシュする前に
James Siva

あなたは単にgit pull --rebase origin master
James Siva

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ハブアカウントがローカルgitとリンクしているかどうかを確認します。

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

4

gerritを使用している場合、コミットの不適切なChange-idが原因である可能性があります。Change-Idを削除してみて、何が起こるか確認してください。


4

Githubリポジトリにプッシュする前に、変更をコミットすることを忘れないでください。これで問題が解決する可能性があります。


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

問題WAS:自分が持っているファイルをステージングする前にコミットしようとしました。

したがって、ファイルをステージングしてコミットする必要があります。

これは正しいシーケンスです。

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
私はこの問題を正確に抱えていました、feature22で実行していたがgit push origin feature22-fixfeature22-fixローカルでもリモートでも終了しなかったため、まずブランチをローカルでチェックアウトしてからプッシュする必要がありました
Honey

1

既存のGitHubリポジトリでディレクトリを初期化しようとしている場合は、変更をコミットしていることを確認する必要があります。

ファイルを作成してみてください:

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

これにより、後で削除できるinitialという名前のファイルが配置されます。

この答えが役に立てば幸い!幸運を!



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の横に「REMOTES」があり、それを右クリックして、[Push to origin]をクリックします。どうぞ。


0

これは、ブランチと同じタグがあり、ブランチをリモートにプッシュしようとしたときに発生しました。


0

私の場合の問題は、(奇妙なことに)masterと呼ばれるブランチがないことでした。リポジトリはGithubから取得しました。


0

まだチェックアウトしていない既存のtypo 'evelop'ブランチをプッシュしていましたが、代わりに 'envelope'というブランチをプッシュしました。ですから、もちろんプッシュするためには、ブランチはローカルの作業コピーに存在している/チェックアウトしている必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.