我通过ssh创建了一个git存储库。它工作,但我看不到目录中的文件。
远程(SSH):
mkdir test.com
cd test.com
git init
client(git bash)
cd /apache/htdocs
git clone git://myserverip/test.com
cd test.com
git add --all .
git commit -a -m "first"
git push origin master
答案 0 :(得分:1)
将文件推送到远程存储库不会更新文件树(“索引”)。它更新了对象的存储。
要更新树以反映存储的对象,您必须在该远程存储库中执行git reset --hard
以将其更新为新的HEAD
。
这是一件坏事,因此远程存储库通常设置为“裸”:git托管的特殊存储库格式,没有工作树(以及其他差异:例如没有.git
directory:配置文件更方便地存储在其根目录中。
为您的上游使用裸存储库:git init --bare
。
答案 1 :(得分:1)
我认为,您必须在服务器上的存储库中添加文件和提交。为什么你不尝试裸存储库?
如果您需要通过远程推送提交,请尝试以下命令:
在服务器上创建存储库:
cd /usr/local/git/ ## or your own repo destination
mkdir repo.git
cd repo.git
git init
touch README
git add .
git commit -a -m "start my repository"
客户端上的,例如ubuntu:
git clone ssh://User@serverip:sshport/usr/local/git/repo.git myrepo
cd myrepo
git branch someUser # create new branch
vim README ## some change on the file
git add README
git commit -a -m "some change by someUser" ## user commit changes
git push origin someUser ## push commit to server
用户推送更改后,系统管理员必须进行合并提交,简单方法是:
cd /usr/local/git/repo.git
git merge someUser ## merge repo by user commit
答案 2 :(得分:1)
我找到了解决方案
mkdir test.com
cd test.com
git init
cd .git
cd hooks
vi post-receive
chmod +x post-receive
后接收
#!/bin/sh
cd ..
env -i git reset --hard