質問

あきらめます! 私がプッシュしようとするたびに、私は愚かになる:

! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'

私たちのチームには、新しいgitセットアップがあります。プライベートブランチを作成する代わりに、自分のコピーを作成するためにメインリポジトリ(github上)をフォークしました。

ある時点で私がやったことは:

$ git fetch upstream master:upstreammaster

これが私の現在の設定です::

$ git branch
master
* upstreammaster

$ git remote -v
origin  git@github.com:userX/projectX.git
upstream    git@github.com:companyX/projectX.git

userXは私のプライベートリポジトリです。

だから、upstreammasterブランチに変更を加え、<!> quot; upstream master <!> quot;からPULLを変更します。 すべてがマージされて詰め込まれます:

$ git pull upstream master
remote: Counting objects: 95, done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 60 (delta 54), reused 0 (delta 0)
Unpacking objects: 100% (60/60), done.
From git@github.com:companyX/projectX
 * branch            master     -> FETCH_HEAD
Merge made by recursive.
stuff                      |  165 ++++++++++++--------
stuff                      |   35 ++--
stuff                       |  107 ++++++++++---
stuff                       |  105 ++++++++++---
stuff             |   24 ++--
stuff               |    9 +-
stuff                   |   53 +++----
stuff            |   44 +++---
stuff              |   52 +++----
stuff |   32 +----
stuff          |    4 +-
 stuff             |  138 ++++++++---------
stuff     |   58 ++++----
stuff    |  115 ++++++++------
stuff          |    5 +-
stuff                       |   39 ++---
stuff                        |   28 ++--
 17 files changed, 560 insertions(+), 453 deletions(-)

しかし、次にしようとすると:

$ git push upstream master
To git@github.com:companyX/projectX.git
 ! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'

ご協力いただければ幸いです!明確化が必要な場合は、お問い合わせください。返信します!

役に立ちましたか?

解決

プッシュを行うとき、アップストリームマスターのrefspecを指定してみてください:

git push upstream upstreammaster:master

他のヒント

ジャレット・ハーディは正しい。または、最初に変更をマスターにマージしてからプッシュを試みます。デフォルトでは、git pushはリモート上で一致する名前を持つすべてのブランチをプッシュし、他のブランチはプッシュしません。したがって、これらは2つの選択肢です。Jarretが言ったように明示的に指定するか、共通のブランチにマージしてプッシュします。

これについてはGitのメールリストで説明されていますが、この動作はすぐには変更されないことは明らかです。多くの開発者は、ワークフローでこの動作に依存しています。

編集/明確化

upstreammasterブランチがプッシュする準備ができていると仮定すると、これを行うことができます:

  1. アップストリームからの変更をプルします。

    $ git pullアップストリームマスター

  2. ローカルマスターブランチに切り替える

    $ git checkout master

  3. rebase

    からの変更をマージ

    $ git merge upstreammaster

  4. 変更をプッシュする

    $ gitプッシュアップストリーム

プッシュする前に しておきたいもう1つのことは、git rebase upstream/masterアップストリーム/マスターに対して変更を加えて、コミットがすべて一緒になるようにすることです。上記の#1と#2の間の個別のステップ(git pull --rebase upstream master)として行うことも、プルの一部として行うこともできます(<=>)

最初に、プッシュしようとしているのと同じrefspecからプルしようとします。

これが機能しない場合は、git pushを使用してgit push -f <repo> <refspec>を強制できますが、注意してください。この方法では、リモートリポジトリで参照が削除される可能性があります。

最初の使用

git pull https://github.com/username/repository master

そして試して

git push -u origin master

<!> quot; upstream <!> quot;のリポジトリです。裸のリポジトリ?同じエラーが発生しましたが、むき出しに変更すると、それらは発生しなくなりました。

プッシュリクエストに[拒否]と表示されている場合は、まずgithubアカウントからプルしてからプッシュしてください。

例:

私の場合、エラーが発生していました-

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/ashif8984/git-github.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

****だから私がやったのは-****

$ git pull
$ git push

そして、コードは私のGithubアカウントに正常にプッシュされました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top