git是管理文件变化的,git仓库更像是一个文件快照的系统,
博客的多主机协同编辑,使用的是git来完成的。网上找了一些资料,但是实现的方法大多是通过github,因为有主机,就想在vps上实现,本来是想用master+分支的方法,最后搞成了2个仓库。但原理是相同的。
核心是
git –work-tree=/path/to/www –git-dir=/var/repo/blog.git checkout -f
这里的 work-tree 是设置远程仓库工作区目录,git-dir 是裸仓库的地址,chekout -f是还原工作目录中的文件,这个特别注意,后面是不加分支名字的它会将工作目录中所有被修改但未暂存的文件还原为上一次提交的状态。这也可以用来撤销工作目录中尚未暂存更改的方式。
这样可以让裸仓库和一个文件夹关联,这个文件夹就是工作区目录,在.git/hooks/中放置一个post-receive文件,将上面的脚本写入,那么当裸仓库收到推送后,就会从仓库中还原工作区目录。神奇!
而“hexo d”命令则通过hexo根目录下的 _config.yml 进行配置 Depolyment字段。
1 | deploy: |
两个不冲突的。
具体的步骤是:
git裸仓库到底是怎么样的——实践出真知
1、先在远程服务器上新建一个裸仓库
git init –bare blog.git
2、在hooks目录中新建post-receive脚本文件
cd blog.git
vim post-receive
3、粘贴脚本
repo: git@111.111.111.111:/home/git/blog.git
https://www.cnblogs.com/qdhxhz/p/9757390.html
http://www.blogways.net/blog/2013/05/28/git-bare-repo-sever.html
https://moelove.info/2016/12/04/Git-%E6%9C%AC%E5%9C%B0%E4%BB%93%E5%BA%93%E5%92%8C%E8%A3%B8%E4%BB%93%E5%BA%93/
最NB的https://www.progit.cn/#_git_on_the_server
git merge 合并的时候如果冲突,可以用 git mergetool 解决冲突,不过没有看懂。
git diff 是查看缓存区与工作区的不同,也可以比较两个提交的不同。
git diff –staged 查看缓存区与工作区的不同
git diff master branchB 比较master 分支和branchB的分支
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。