web-dev-qa-db-ja.com

gitエラーの解決方法:「現在のブランチの先端が遅れているため、更新は拒否されました」

私は最近Gitの使用を開始しました(以前はSubversionを使用していましたが、現在はbitbucketとgitを使用するプロジェクトで共同作業を行っています)。

今日は、同僚がブランチを作成する代わりにマスターに変更をプッシュしたという意味がわかるまで、すべてが順調に進んでいます。これは、コミットしようとするとエラーが発生することを意味します。

現在のブランチの先端が遅れているため、更新は拒否されました

私はこれをプルリクエストで再同期することで解決する必要があることを知っていますが、ローカルで行った変更を失いたくないし、コミットを強制して他の人が行った変更を消去したくない。

どちらも失うことなく変更をマージできるようにする正しいアプローチは何ですか?

41
Finglish

すでにいくつかのコミットを行っている場合は、次のことができます

git pull --rebase

これにより、すべてのローカルコミットが新しくプルされた変更の上に配置されます。

これには非常に注意してください:これはおそらく、現在のすべてのファイルをリモートリポジトリのブランチの先頭にあるファイルで上書きします!これが起こり、あなたがそれを望んでいないなら、NDO THIS CHANGE with

git rebase --abort 

...当然、新しいコミットを行う前にそれを行う必要があります!

61
Akash Agrawal

私はこのようにそれをします:

  1. ステージングされていないすべての変更をステージングします。

    git add .
    
  2. 変更を隠します。

    git stash save
    
  3. リモートと同期します。

    git pull -r
    
  4. ローカルの変更を再適用します。

    git stash pop
    

    または

    git stash apply
    
19
Rebecca Abriam

同じ問題がありました。残念ながら、カタログレベルが間違っていました。

しようとしました:git Push -u Origin master->エラーが発生しました

それから私は試してみました:git pull --rebase->まだ問題がありました
最後にディレクトリを変更しますcd your_directory

その後、もう一度試してみました(git Push)と動作します!

3
Paweł R

次のVisual Studio 2017の変更により、この問題を克服できました。

  1. チームエクスプローラーで、Settingsに移動します。 グローバル設定に移動して、このオプションをグローバルレベルで設定します。 リポジトリ設定に移動して、レポレベルでこのオプションを設定します。
  2. 目的の設定にを引いたときにローカルブランチをリベースします(私にとってはTrue)、そして選択しますUpdateで保存します。

参照: https://docs.Microsoft.com/en-us/vsts/git/concepts/git-config?view=vsts&tabs=visual-studio#rebase-local-branch-when-pulling

1
Taersious

私はブランチでまったく同じ問題を抱えていました(ブランチBと呼ぶことにします)

  1. マスターブランチに切り替えました(git checkout master)
  2. マスターをプルしました(git pull)
  3. 新しいブランチを作成しました(git branch C)-ここでマスターからブランチしていることに注意してください
  4. ブランチCにいるとき、ブランチBとマージします(git merge B)
  5. プッシュを実行します(git Push Origin C)-動作します:)

これで、ブランチBを削除してから、ブランチCをブランチBに名前変更できます。

お役に立てれば。