4

コミット ツリーを書き直して作成者の名前を変更し、電子メールを変更した後、ローカル リポジトリとリモート オリジンが同期しなくなりました。私は唯一の開発者であり、ローカル リポジトリをオリジンにプッシュし、オリジン/マスターをローカル マスター ブランチに更新したいと考えています。これが私が成功せずに試したことです:

LibGuest08@LBP-NW0345QZMH1 /e/devel/src/java/bbct (swing.0.5.2)
$ git push
Password:
To ssh://codeguru@git.code.sf.net/p/bbct/code
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://codeguru@git.code.sf.net/p/bbct/code'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you did not intend to push that branch, you may want to
hint: specify branches to push or set the 'push.default' configuration
hint: variable to 'current' or 'upstream' to push only the current branch.

LibGuest08@LBP-NW0345QZMH1 /e/devel/src/java/bbct (swing.0.5.2)
$ git push origin master:master
Password:
To ssh://codeguru@git.code.sf.net/p/bbct/code
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://codeguru@git.code.sf.net/p/bbct/code'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and merge the remote changes
hint: (e.g. 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

LibGuest08@LBP-NW0345QZMH1 /e/devel/src/java/bbct (swing.0.5.2)
$ git push -f origin master:master
Password:
Counting objects: 464, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (148/148), done.
Writing objects: 100% (452/452), 470.65 KiB, done.
Total 452 (delta 268), reused 417 (delta 247)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To ssh://codeguru@git.code.sf.net/p/bbct/code
 ! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://codeguru@git.code.sf.net/p/bbct/code'

LibGuest08@LBP-NW0345QZMH1 /e/devel/src/java/bbct (swing.0.5.2)
$

提案どおりにオリジンもプルしましたが、すべてのコミットとマージされ、その中には作成者名と電子メールが間違っているものもあります。リモートのオリジン リポジトリをローカル リポジトリと同期し、不正なメタデータを含むすべてのコミットを削除するにはどうすればよいですか?

アップデート:

Sourceforge リポジトリの構成ファイルを編集しました。まだエラー メッセージが表示されますが、別の行に気付きました。

lib_lab_ref08@LBP-REF87XVMDP1 /e/devel/src/java/bbct (master)
$ git push -f
Password:
Counting objects: 464, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (148/148), done.
Writing objects: 100% (452/452), 470.65 KiB, done.
Total 452 (delta 268), reused 417 (delta 247)
fatal: Unable to create temporary file: Permission denied
error: unpack failed: index-pack abnormal exit
To ssh://codeguru@git.code.sf.net/p/bbct/code
 ! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'ssh://codeguru@git.code.sf.net/p/bbct/code'

何が

fatal: Unable to create temporary file: Permission denied
error: unpack failed: index-pack abnormal exit

平均?さらに重要なことに、これを修正するにはどうすればよいですか?

結果論:

公共のパソコンを使用しています。最近リポジトリ データベースを圧縮しましたが、プッシュ中に git が圧縮されたリポジトリ オブジェクトを解凍する一時フォルダーに書き込む権限がないと推測しています。これらのセキュリティ制限のないコンピューターでこれを試してみて、何が起こるか見てみましょう.

4

1 に答える 1

6

リモートリポジトリには、実行しているプッシュのタイプである非早送りプッシュを防止する (そしてそれは良いことです) 設定があります。

あなたが指摘するように、非 ff プッシュを使用するのはあなただけなので安全です。変更方法については、このブログ投稿を参照してください。

  1. でsshシェルにログインしますssh -t USER,PROJECT@shell.sourceforge.net create
  2. git リポジトリに移動します: cd to /home/git/p/<project_name>/code.git(正しいプロジェクト名を入力)
  3. で構成ファイルを編集し、に設定videnyNonFastforwardsますfalse
于 2012-09-16T17:58:34.757 に答える