0

新しいマスターを作成するために使用したい Git 作業ディレクトリがあり、既存のコミット履歴 (など) をそのまま保持します。この理由は、元のリモート マスターが破損し、作業ディレクトリが更新されたためです。

作業ディレクトリの Git クローンを試しましたが、クローンしたディレクトリにプッシュできません。作業ディレクトリを直接コピーして Git サーバーに貼り付けると、同様の問題が発生します。

ローカルの作業ディレクトリをリモート サーバーの新しいマスターに変換するにはどうすればよいですか?

私はGitに関しては初心者なので、専門用語が多すぎない簡単な説明は本当に役に立ちます.

4

3 に答える 3

0

現在チェックアウトされているものは何でもブランチするため、リモートリポジトリにプッシュできないというエラーが発生していると思います(ここのように: Git push received "error: refusing to update checked out branch" )。

ベア リポジトリ(これは完全な履歴を持つリポジトリですが、チェックアウトされた作業コピーはありません)を作成するには、次の手順を実行します。

git clone --bare yourrepo barerepo.git

次に、barerepo.gitディレクトリを取得して、それをホストするマシンに移動します。

完了したら、リポジトリをリモートとして追加しますyourrepo

git remote add origin /path/to/barerepo.git

次に、できるはずです

git fetch origin
git push origin

しかし、この質問は、クラッシュしたリモート リポジトリをローカル リポジトリから復元したいように思えます。1 週間前に同じ問題が発生しました:リモートでクラッシュした Git リポジトリを復元するにはどうすればよいですか?

于 2013-10-07T11:44:37.720 に答える
0

パラメーターを使用して、ローカル ブランチからリモート マスター ブランチへのプッシュを強制することもできますが、--force何をしているのかわからない場合はお勧めしません。

-f --force 通常、コマンドは、上書きに使用されたローカル ref の先祖ではないリモート ref の更新を拒否します。このフラグはチェックを無効にします。これにより、リモート リポジトリがコミットを失う可能性があります。注意して使用してください。

https://www.kernel.org/pub/software/scm/git/docs/git-push.html

だからこのようなもの:

git push --force origin master:master

1 つmasterはプッシュするローカル ブランチを表し、もう 1 つはプッシュmaster先のリモート ブランチを表します。

于 2013-10-07T11:50:18.013 に答える