将远程服务器目录与本地git repositery同步
我想将远程计算机的目录将远程服务器目录与本地git repositery同步,git,ssh,synchronization,git-bare,git-init,Git,Ssh,Synchronization,Git Bare,Git Init,我想将远程计算机的目录/home/myproject与本地计算机的目录D:\myproject\作为源同步。我想使用git(也可以从提交历史记录中获益,等等) 我在远程机器上完成了这项工作(创建一个裸存储库,另请参见): 在本地计算机上(使用当前目录D:\myproject\): 现在远程服务器的/home/myproject.git已经同步,但是目录/home/myproject/(应该包含例如/home/myproject/main.py)仍然不存在 因此,我必须在远程服务器上执行此操作:
/home/myproject
与本地计算机的目录D:\myproject\
作为源同步。我想使用git
(也可以从提交历史记录中获益,等等)
我在远程机器上完成了这项工作(创建一个裸存储库,另请参见):
在本地计算机上(使用当前目录D:\myproject\
):
现在远程服务器的/home/myproject.git
已经同步,但是目录/home/myproject/
(应该包含例如/home/myproject/main.py
)仍然不存在
因此,我必须在远程服务器上执行此操作:
cd /home
git clone myproject.git myproject
现在/home/myproject/main.py
已经存在
问题:每次我在本地机器上执行git push
,它都是远程服务器的/home/myproject.git
更新,而不是/home/myproject/
问题:如何配置这些存储库,使git push
自动更新/home/myproject
中的所有文件,例如/home/myproject/main.py
,而不是仅/home/myproject.git
?如本文所述,这里是一个可行的解决方案:
D:\myproject\
),创建存储库:
git init
git add main.py
git commit -m "First"
git remote add dest root@203.0.113.0:/home/myproject.git
mkdir /home/myproject.git && cd /home/myproject.git && git init --bare
echo -e '#!/bin/sh\nGIT_WORK_TREE=/home/myproject git checkout -f' > hooks/post-receive
chmod +x hooks/post-receive
mkdir /home/myproject
git push -u dest master # later we can just do: git push
现在,
/home/myproject
已在远程机器上更新 这里有一个更简单的解决方案(不需要“裸”存储库或“接收后挂钩”脚本):
mkdir /home/myproject && cd /home/myproject
git init
git config receive.denyCurrentBranch updateInstead
D:\myproject\
),创建源存储库,并推送它:
git init
git add main.py
git commit -m "First"
git remote add dest root@203.0.113.0:/home/myproject
git push -u dest master
现在,/home/myproject
已在远程机器上更新注意:这需要git版本>=2.4。如果您没有此版本,并且当前发行版中没有此版本:
添加apt存储库ppa:git core/ppa;apt更新;apt install git
关于裸存储库:。使用GIT部署:.Thank you@phd,我在发布问题之前已经读过了,但它对这个精确的请求并没有真正的帮助,即,GIT push
不仅更新myproject.GIT,而且最重要的是更新目标目录。
mkdir /home/myproject && cd /home/myproject
git init
git config receive.denyCurrentBranch updateInstead
git init
git add main.py
git commit -m "First"
git remote add dest root@203.0.113.0:/home/myproject
git push -u dest master