5

ここで何かが本当にうまくいかなかった。背景をあげさせてください。

今日、私は会社のデフォルトの裸の msysgit Windows サーバーにプッシュしようとしましたが、 SO のどこにでも複製された恐ろしいエラーメッセージが表示され、 non-bare へのプッシュについて表示されます。私のサーバーはむき出しのはずだったので、メッセージは奇妙だと思いました。そして昨日、それはうまく機能していました。

core.bareそれから、どういうわけか、に設定されていることに気付きましたfalse!これは で開始されたレポであり、その中に " " フォルダーは--bareありませんでした。.gitそして、私がチェックに行くと、.git フォルダーがどこからともなく現れて、がっかりしました! 私はそこで何かをすることができた唯一の他の人に尋ねます、そして確かに、彼はそうしませんでした。

編集master:ブランチでのみ発生し、サーバー.gitは10月1日に作成されたように見えますが、それほどmaster頻繁にプッシュしないため、これは正しい可能性があります。

フォルダーには 3 GB があり、Ghostly の横にすべての git 構造がある裸のフォルダーには 6 GB があり.gitます。私のローカルの .git には 16 GB ありますが、そこで何が起こっているのかわかりません...さらに、git logまたは.git を確認できませんgit reflog。ベアを true または false に設定すると、同じエラーが発生しますfatal: bad default revision 'HEAD'そして今、レポを回復する方法を検討する時がすでに来ていると思います...

しかし、すべての復元教義を検討する前に、次のことを考えます。

  • git で発行されたすべてのコマンドを誰が発行したかを確認できるように、何らかのgit アクティビティ ログはありますか?

似たようなものは見つかりませんでした。

4

2 に答える 2

3

そのため、中央の git リポジトリ サーバーにgitolite V3インストールしました (リポジトリを複製して、このインストール スクリプトのようにインストールするだけです)。

Gitolite はすべての git コマンドをインターセプトし、(主要な認証フレームワーク機能に加えて) コマンドを に記録します~/.gitolite/logs/gitolite-log-xxx

そのようなログの抜粋を次に示します。

2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/triggers/post-compile/update-git-configs,POST_COMPILE
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/triggers/post-compile/update-gitweb-access-list,POST_COMPILE
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/commands/access,%,gitweb,R,any
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/commands/git-config,-r,%,gitweb\.
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/triggers/post-compile/update-git-daemon-access-list,POST_COMPILE
2012-08-16.12:20:20     29507           system,/home/gitadmin/gitolite/bin/commands/access,%,daemon,R,any
2012-08-16.12:20:20     29507   END
2012-08-20.07:39:12     17683   ssh     ARGV=gitoliteadm        SOC=git-upload-pack 'gitolite-admin'    FROM=127.0.0.1
2012-08-20.07:39:12     17683           access(gitolite-admin, gitoliteadm, R, 'any'),-> refs/.*
2012-08-20.07:39:12     17683           trigger,Writable,access_1,ACCESS_1,gitolite-admin,gitoliteadm,R,any,refs/.*
2012-08-20.07:39:12     17683   pre_git gitolite-admin  gitoliteadm     R       any     -> refs/.*
2012-08-20.07:39:12     17683           system,git,shell,-c,git-upload-pack '/home/gitadmin/repositories/gitolite-admin.git'
2012-08-20.07:39:12     17683   END
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/triggers/post-compile/update-git-configs,POST_COMPILE
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/triggers/post-compile/update-gitweb-access-list,POST_COMPILE
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/commands/access,%,gitweb,R,any
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/commands/git-config,-r,%,gitweb\.
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/triggers/post-compile/update-git-daemon-access-list,POST_COMPILE
2012-08-16.12:20:20     29507           system,/home/gitadmin/gitolite/bin/commands/access,%,daemon,R,any
2012-08-16.12:20:20     29507   END
2012-08-20.07:39:12     17683   ssh     ARGV=gitoliteadm        SOC=git-upload-pack 'gitolite-admin'    FROM=127.0.0.1
2012-08-20.07:39:12     17683           access(gitolite-admin, gitoliteadm, R, 'any'),-> refs/.*
2012-08-20.07:39:12     17683           trigger,Writable,access_1,ACCESS_1,gitolite-admin,gitoliteadm,R,any,refs/.*
2012-08-20.07:39:12     17683   pre_git gitolite-admin  gitoliteadm     R       any     -> refs/.*
2012-08-20.07:39:12     17683           system,git,shell,-c,git-upload-pack '/home/gitadmin/repositories/gitolite-admin.git'
2012-08-20.07:39:12     17683   END
于 2012-10-11T12:12:07.337 に答える
1

reflog を使用して、参照がどのように移動しているかを確認できます。これにより、通常の git ログ (早送りマージなど) からは見えないことがあるアクティビティが登録されますが、あなたの場合は問題になるとは思いません。

私はあなたがそのような構造を持っていると信じています(ちなみに.git拡張子を裸のレポ名に付けることが推奨されているので、簡単に区別できます): ../core.bare.git/ には、ブランチ、構成、HEAD、フック、情報、オブジェクトなど ../core.bare.git/.git には、独自のブランチ セット、構成などが含まれています。サーバー上のレポはまったく問題ないと思います。そこから .git フォルダーを削除して再確認するだけです。構成ファイルはまだベアレポであると言っています。

于 2012-10-10T21:37:19.243 に答える