19

外部ディスクのリモート リポジトリに 'git push origin master' を実行しようとすると、チェックアウト リポジトリへのプッシュが git の次のリリースではデフォルトで拒否されるという警告が表示されました。外部ディスクでプロジェクトをチェックアウトしました。コンピューターで行った変更をこれらのリポジトリに送信したいと考えています。「git push origin master」は正しい方法ではありませんか? 外部ディスクのリポジトリで 'git pull ...' を実行する必要がありますか? だから私は変更をプッシュすることはできませんが、それらをプルするだけですか? 「ベア」リポジトリでの作業のみが異なりますか? 外部ディスクのリポジトリが裸のリポジトリである場合、変更をプッシュできますか? 私は正しく理解していますか?

4

2 に答える 2

23

警告をよくお読みください。新しいデフォルトの禁止は、非ベア リポジトリ内の現在チェックアウトされているブランチへのプッシュのみです。裸でないリポジトリの他のブランチにプッシュしても問題ありません。

これは、プッシュ プロセスが作業ツリーに直接アクセスできないため、インデックスとブランチ ヘッドが作業ツリーの下で変更されるためです。その後作業ツリーに移動すると、実際に開発中だった変更と混合してプッシュされた変更が作業ツリーによって元に戻されたように見えます。これにより、2 つの変更セットを分離することが非常に困難になります。

他のブランチへのプッシュには、そのような欠点はありません。次に、そのリポジトリに移動し、必要に応じてそれらの変更をチェックアウトしたブランチにマージできます。

于 2010-01-27T18:59:17.167 に答える
6

プッシュはレポの内部状態のみを更新し、ファイルのチェックアウトされたディスク上のコピーには影響しないため、非ベア リポジトリにプッシュしないでください。git checkoutしたがって、リポジトリ内のファイルの状態のディスク上のコピーを最初に ( 経由で) 更新せずにそのリポジトリで作業を開始すると、問題が発生する可能性があります。

于 2010-01-27T14:55:53.747 に答える