• 部署git


    初次配置

    执行下面两条命令来配置用户信息,他们会用于Git提交时的签名:

    $ git config --global user.name "John Doe"
    $ git config --global user.email johndoe@example.com

    建立本地Git仓库

    在你的项目目录下执行:

    $ git init

    这会在你的项目目录下建立一个.git目录,存储所有Git所需的资源。
    然后我们该往项目中添加文件了。不过在这之前,最好先建立一个名为.gitignore的文件,来把一些不需要的文件或文件夹排除掉。比如在Mac下有时会在当前目录下产生一个.DS_Store的文件,这对我们的项目是无用的,我们就可以把它排除掉,而一些文本编辑器会使用以~结尾的备份文件,也要排除掉:

    .DS_Store
    *~

    《Pro Git》的2.2节对此规则有更详细的介绍。
    然后我们就可以进行文档的添加了,如果是按照上面把忽略规则设定好了的话,可以简单地执行:

    $ git add .

    这会把忽略规则以外的所有文件都添加进来,也可以这样:

    $ git add *.c

    来添加部分文件。Git还可能会忽略.gitignore文件,需要手工添加:

    $ git add .gitignore

    添加好文件后,就进行第一次提交:

    $ git commit -m 'initial project version'

    Git要求所有地提交都要包含说明文字,-m后面地即为说明,这是一种快捷地做法,也可以只用git commit,然后在切换到的界面中编辑说明文字。

    建立服务器端

    Git是分布式的版本管理软件,不需要服务器端也可以使用,但若要进行多人/多设备协同开发,还是要架设一个服务器端。
    首先把刚才建好的本地仓库导出为裸仓库,在项目的上级目录执行:

    $ git clone --bare my_project my_project.git

    这会新建一个my_project.git文件夹,差不多和项目目录.git文件夹中的内容一样。

    然后用post-receive钩子来自动check out最后一个版本到你的网站目录里(网站目录需要手动创建)。

    $ mkdir /var/www/www.example.org
    $ cat > hooks/post-receive
    #!/bin/sh
    GIT_WORK_TREE=/var/www/www.example.org git checkout -f
    $ chmod +x hooks/post-receive
    

    注意:网站目录对你的ssh帐号需要有写权限 然后把远程仓库添加到本地


    使用scp命令(或其他方式)把它上传到你的服务器上:

    $ scp -r my_project.git user@git.example.com:/var/git

    服务器上存放的目录可以是任意位置,目录的访问权限其实就和通过Git访问的权限相同(使用ssh协议来访问代码),比如你的项目是私人的,就可以放在你的home目录中。
    上传之后本地的my_project.git就可以删掉了。
    如果你的服务器端还没有安装git的话,这时是无法通过Git获取代码的,很简单,还是通过

    $ sudo apt-get install git-core

    命令,在服务器端安装Git。
    现在就可以在本地通过Git来获取这个项目了:

    $ git clone user@git.example.com:/var/git/my_project.git
    $  git push web +master:refs/heads/master

    这会在当前目录下建立一个my_project文件夹,里面包含项目源码和git仓库。也可以在上面的命令后再添加一个参数,来制定这个文件夹的位置和名称。

    本地仓库和服务器端的关联

    我们通过git clone命令抓下来的项目会自动和抓取的服务器端关联好,这样如果你确保前面添加到库中的文件没有遗漏,就可以把它删掉,再新clone下来的项目目录下进行开发(这样最简单最懒)。
    也可以手工为原项目建立关联,在最初的项目目录中执行:

    $ git remote add origin user@git.example.com:/var/git/my_project.git

    这条命令就是把刚才做好的服务器端仓库添加为远程仓库,名字叫origin。
    这时已经可以通过git fetch origin和git push origin master命令来抓取和推送代码了,但这样会比较麻烦(git fetch不会自动将远端分支合并到当前工作的分支)。
    为了之后的使用方便,要设置本地的master分支跟踪远程仓库的master分支:

    $ git checkout --track origin/master
    $ git branch --set-upstream master origin/master

    这条命令即让本地master分支跟踪远程仓库origin中的master分支。
    设置好更总后如果我们需要从远程仓库抓取数据,只需要运行

    $ git pull

    即可。而本地数据变动后,要提交到远程仓库,则执行:

    $ git push

    使用git部署网站

    以前写好了网页就用ftp工具上传到服务器上,这样子没有版本控制的发布行为可能会导致很多问题。既然现在我们用git来管理项目,那也可以用它来发布网站。
    假设刚才我们的my_project是为sojingle.net做的网站,要放在服务器的/var/www/sojingle.net/htdocs/www目录下,则可以在服务器端执行

    $ git clone user@git.example.com:/var/git/my_project.git /var/www/sojingle.net/htdocs/www

    如果网站和git服务器在同一个主机的话,也可以使用本地文件协议来抓取:

    $ git clone /var/git/my_project.git /var/www/sojingle.net/htdocs/www

    不止是网站,有些软件也是通过这种方式来发布。比如HomebrewRVM,在更新本地软件时,就是利用git来更新。

    新建develop分支

    Git除了分布式这一大特性外,还大大强化了分支的使用。我们日常的开发工作一般不在master分支上进行,而是最好建立一个develop分支:

    $ git checkout -b develop

    开发时,最好基于develop分支再新建一个特性分支,比如我们要为网站添加一个新功能“标签支持”,就为其新建一个分支tag_support,新功能开发完成之后,将其合并到develop分支上:

    $ git checkout develop
    $ git merge tag_support

    这就将新功能的代码合并到了开发主分支上,合并过程没有冲突的话,就可以删掉这个分支:

    $ git branch -d tag_support

    当做好了一组新功能,决定要发版本了,就用可以把develop分支合并到master分支上,git push推送到远程仓库。在服务器端的www目录中,再来执行git pull,即可把网站更新到最新版本。

    推荐及参考

    《Pro Git》 http://progit.org/book/zh/
    这本书的作者是GitHub的员工,写得非常棒,大量的配图把Git的分支管理讲得非常清楚。而且非纸质书是免费的,已经有了中文版翻译,可以直接在线阅读。
    《Git开发管理之道》 http://blog.leezhong.com/translate/2010/10/30/a-successful-git-branch.html
    这篇文章主要讲的是软件开发中的分支管理模型,很值得一读。

  • 相关阅读:
    平摊分析的应用
    平摊分析--势能法
    平摊分析--会计法
    平摊分析--聚集法
    算法设计与分析总结
    动态规划--前缀动态规划问题
    【例】动态规划--最长回文序列问题
    分治法--中位数与顺序统计量
    动态规划--数轴动态规划问题
    pymssql模块官方文档的翻译
  • 原文地址:https://www.cnblogs.com/descusr/p/3013163.html
Copyright © 2020-2023  润新知