我认为这应该很容易通过对.git
目录进行一些操作来实现。
创建测试设置
cd ~/Desktop/test/
mkdir outdated server
cd outdated && touch testfile1 testfile2 testfile3
git init && git add . && git commit -m "testfiles"
cd .. && git clone --bare outdated/ cloud_hosted_repo
到目前为止,我们已经拥有cloud_hosted_repo
应该等同于 的目录github repo
,outdated
该目录应该被视为等同于本地签出的副本github repo code
(例如在开发人员机器上),以及server
我们应该将其视为远程服务器的目录。
登录服务器并在服务器上创建已部署的项目
cd server && mkdir project_location some_other_location
cd project_location/ && touch testfile4 testfile5 testfile6 && cd ..
如果这个项目位置已经是一个 git repo,移动 .git 目录
mv project_location/.git project_location/.git.backup
将原始存储库克隆到某个位置并从中清除文件
cd some_other_location/ && git clone ../../cloud_hosted_repo/ .
git rm "*" && git commit -m "removed all older files" && cd ..
移动.git
回购
mv some_other_location/.git/ project_location/ && cd project_location/
git add . && git commit -m "Updated Project" && git push origin master
我们完成了。
git log
将显示分支中的所有提交。
您可以在任何需要的地方添加额外的复杂性(例如为备份创建额外的分支等)。