0

私はローカルの変更をプッシュしようとしています:

git push all

「すべて」は、github とリモート サーバーのリポジトリを意味します - 私の .git/config で:

[remote "all"]
    url = git@github.com:...myrepo.git
    url = ssh://usrname@servername/myrepo.git/

当初、サーバー上で手動で変更する必要はないと想定されていましたが、最終的には変更が行われました。ただし、サーバー上の変更は実質的ではないため、それらをオーバーライドして、ローカルリポジトリの正確なレプリカを作成したいと考えています。そのため、リモートサーバーにプッシュできず、エラーが発生しました:

remote: error: Your local changes to the following files would be overwritten by merge:
remote: Please, commit your changes or stash them before you can merge.

同様の質問に対する以前の回答を認識していますが、残念ながら「git push origin --force all」が機能せず、同じエラーがスローされます

助けてください!前もって感謝します!

4

2 に答える 2

1

わかりました、それは完全に理にかなっています。ネットワーク上のリモートはむき出しではありません。つまり、あなたはそれに取り組んでいます。独自の作業ディレクトリがあります。実際、プッシュしようとしているブランチは現在チェックアウトされています。追加するには、まだコミットされていない変更もいくつかあります。Git は、そこに変更をザッピングすることを拒否します。

適切なワークフローは、リモートでそこから変更をプルすることです。

ただし、次のこともできます。

  • リモートリポジトリで、ブランチではなく特定のコミットをチェックアウトして、ヘッドレス状態にします。
  • 他の人が使用するか、CIサーバーがクエリを実行する中心的なリポジトリである場合は、ベアリポジトリにします。これは で行われgit clone --bareます。
于 2012-05-30T20:03:57.210 に答える
0

pushについては man ページを参照してください。

1 つのリモートで複数のリポジトリを表すことはできません。「github」と「network」を別のリモートとして追加します。プッシュの最後の例では、「all」はブランチ名として扱われます!.

それとコロンが省略された場合、構文はgit push remote-name branch-name:remote-branch-nameどこにあるのremote-branch-nameかが暗示されます。

次に、push コマンドのオプションを使用し--allて、github とネットワーク リモートの両方にプッシュします。

git push --all

プッシュしたいすべての場所に別々のリモートを設定した後は理にかなっています。

于 2012-05-30T19:19:29.063 に答える