4

ローカルマシンにgitリポジトリを設定し、linodeボックスにベアリポジトリを設定しました。git pushを実行してもエラーは発生しませんが、リモートサーバーにファイルが表示されません。私が従ったコマンドのシーケンスは以下のとおりです。

リモートの場合:

abhijat@kangaroo:~$ mkdir dev
abhijat@kangaroo:~$ cd dev && git init --bare

ローカルマシンの場合:

krypton:test abhijat$ git init
krypton:test abhijat$ vim app.py
krypton:test abhijat$ git init
Initialized empty Git repository in /Users/abhijat/dev/test/.git/
krypton:test abhijat$ git add .
krypton:test abhijat$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   app.py
#
krypton:test abhijat$ git commit -m 'test first commit'
[master (root-commit) 3bee148] test first commit
 1 files changed, 16 insertions(+), 0 deletions(-)
 create mode 100644 app.py
krypton:test abhijat$ git remote add origin abhijat@linode:~/dev
krypton:test abhijat$ git push -v origin master
Pushing to abhijat@linode:~/dev
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 298 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
To abhijat@linode:~/dev
   01a0e08..2273564  master -> master

しかし、linodeをチェックすると、ファイルがありません。

abhijat@kangaroo:~/dev$ ls -ltr
total 32
drwxr-xr-x  4 abhijat abhijat 4096 Sep  8 10:17 refs
drwxr-xr-x  2 abhijat abhijat 4096 Sep  8 10:17 info
drwxr-xr-x  2 abhijat abhijat 4096 Sep  8 10:17 hooks
-rw-r--r--  1 abhijat abhijat   73 Sep  8 10:17 description
drwxr-xr-x  2 abhijat abhijat 4096 Sep  8 10:17 branches
-rw-r--r--  1 abhijat abhijat   23 Sep  8 10:17 HEAD
-rw-r--r--  1 abhijat abhijat   66 Sep  8 10:57 config
drwxr-xr-x 12 abhijat abhijat 4096 Sep  8 11:03 objects
abhijat@kangaroo:~/dev$ find . -name app.py
abhijat@kangaroo:~/dev$

ここで明らかな何かが欠けていますか?通信はssh経由で、キーは期待どおりに設定されています。パスワードなしでログインできます。ただし、ファイルはリモートサーバーにコピーされません。

ありがとう

4

3 に答える 3

5

リポジトリにプッシュしてファイルを更新する場合は、サーバー側のgitフックを作成して、プッシュ後にファイルをチェックアウトできます。サーバー側のgit/hooks/ディレクトリに、という名前のファイルを作成し、post-receive次のコードを追加します。

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

次に、を使用してファイルに適切な権限を付与しますchmod +x post-receive

注:上記のコードは、gitディレクトリとデプロイされたファイルが異なるディレクトリにあることを前提としています。構成方法に応じてファイルを更新します。

詳細と詳細な説明はこちら: https ://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps

于 2015-01-08T19:11:48.917 に答える
4

Gitはサーバー側ではそのようには機能しません。ファイルは高度に圧縮され、チャンクにグループ化されているため、特定のファイルを見つけることができません。

gitサーバーをテストするには、別のディレクトリに別のクローンを作成し、app.pyがそこにあるかどうかを確認します。

git clone abhijat@linode:~/dev dev2
于 2012-09-08T11:30:04.817 に答える
0

仮想FS上のレポのブランチ/リビジョン/タグの内容を提示するプロジェクトに取り組んでいます。これはfuseとlibgit2に基づいています。現時点では非常に初期の段階ですが、リビジョン内のファイル/ディレクトリとその内容を表示できます。ブランチを使用するように要求した場合、ブランチを移動すると、仮想FSがその場で更新されます。念のため:初期段階なので、LFS、サブモジュール、...あなたが考えている素晴らしい機能はありませんか?そのどれも。git専門用語で木とブロブだけ。

https://github.com/eantoranz/gitmod

于 2020-06-27T00:18:42.420 に答える